首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Meteor -在DOM render\render上运行代码

Meteor -在DOM render\render上运行代码
EN

Stack Overflow用户
提问于 2015-05-27 19:12:22
回答 2查看 225关注 0票数 1

HTML

代码语言:javascript
复制
<template name='sometpl'>
  <select>
  <option>day</option>
  <option>night</option>
  </select>
  {{#if day}}
    <div class='ui popup' data-popup='I'm awake!'>day</div>
  {{#if night}}
    <div class='ui popup' data-popup='I'm asleep'>night</div>
</template>

咖啡

代码语言:javascript
复制
Template.sometpl.helpers
  day:-> if $('select').val()=='day' then true
  night:-> if $('select').val()=='night' then true

Template.sometpl.onRendered ->
      $('.ui.popup').popup()

这段代码$('.ui.popup').popup()在各个元素(语义-ui)上初始化弹出窗口,.The问题是它只在tpl render上运行一次,因此只影响这个节点:<div class='ui popup' data-popup='I'm awake!'>day</div>

当我选择night时,不会运行此代码$('.ui.popup').popup(),只留下新呈现的节点<div class='ui popup' data-popup='I'm asleep'>night</div>没有弹出窗口。

此外,当我再次选择day back时-这次没有弹出窗口!因为它调用了全新的'day‘div的渲染,而不是旧的。

这里可以做些什么?

EN

回答 2

Stack Overflow用户

发布于 2015-05-27 19:26:47

试着用你的白天和晚上的div做一个组件:

代码语言:javascript
复制
<template name="popup">
   <div class='ui popup' data-popup='{{text}}'>{{day}}</div>
</template>

它的javascript:

代码语言:javascript
复制
Template.popup.onRendered(function() {
    this.$('.ui.popup').popup()
});

然后你可以这样做:

代码语言:javascript
复制
{{#if day}}
    {{>popup text="I'm awake" day="day"}}
{{/if}}

{{#if night}}
    {{>popup text="I'm asleep" day="night"}}
{{/if}}
票数 1
EN

Stack Overflow用户

发布于 2015-05-28 14:34:13

原来我需要使用Tracker.afterFlushTracker.autorun

完成solution

感谢guys here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30480807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档