我有一个模板,它每秒钟更新一次文本。
我也有一个按钮,当点击它的风格,以显示一个禁用的按钮-这工作良好,但一旦模板重新呈现,由于上述条件,然后按钮恢复到原来的风格。这就好像整个模板都是从头开始呈现的(template.render每秒钟被触发一次)。
这是正常的吗?是否需要通过反应性{{ via样式}}类型机制来控制样式?
发布于 2014-02-22 12:08:57
是的,典型的方法是通过由模板助手函数设置的class来设置样式。要禁用按钮/输入元素,只需使用disabled属性而不是class
<button type="button" {{#if buttonDisabled}}disabled{{/if}}>Button Text</button>或
<input type="button" value="Button Text" {{#if buttonDisabled}}disabled{{/if}} />然后做:
Template.yourFormTemplate.buttonDisabled = function() {
// return true or false depending on if the button should be disabled
};问题是,当Meteor重新呈现您的模板时,您设置的元素实际上被替换为一个新的元素。请注意,Meteor团队目前正在开发一个新的模板引擎,该引擎可以在更细粒度的级别上工作,因此元素不一定会像这样被替换。您可以使用以下命令使用新模板引擎的预览版本尝试当前代码:
meteor --release shark-1-29-2014-e或
mrt --release shark-1-29-2014-e但是,仍然建议通过使用模板助手设置的class属性对元素进行样式设置。这是一种更具声明性的、模板驱动的方法,它更适合于"Meteor方式“来做事情,而不是直接从JavaScript中设置样式的强制方法。它还有助于分离关注点,允许您的CSS控制实际样式。
https://stackoverflow.com/questions/21953622
复制相似问题