【发布时间】:2015-01-21 14:57:33
【问题描述】:
当我在任何 JS 函数中更改模板数据时,我试图让我的流星模板显示更新值,但它似乎没有做任何事情。 代码如下:
Template.editorder.rendered = function() {
var self = this;
//reference this.data later on
Template.editorder.data = this.data;
//Initialize the date pickers
$('.datepicker').datepicker({
selectedDate: new Date(),
onDateChanged: function(date) {
var d = new Date(date);
//TRYING TO UPDATE THE "VIEW MODEL" HERE
self.data.dateCreated = Template.editorder.data.dateCreated = date;
}
});
};
在我看来,我只是:
<template name="editorder">
...
Date created: {{dateCreated}}
...
</template>
这根本不起作用。 self.data.dateCreated 或 Template.editorder.data.dateCreated 不会反映在视图中。我认为让更新显示的唯一方法是更新已发布的数据对象本身,但我还不想将更改发送到数据库。
我想这样做的方法可能是使用模板助手,但在我的测试中,我似乎也无法让它工作。我尝试设置一个 Template.editorder.viewmodel = function() { } 方法,该方法返回一个全局对象范围,我在 Template.editorder.rendered() 函数中将其分配为“this.data”,但更新了它viewmodel 也没有更新视图。
有没有办法做到这一点? 感谢您的帮助。
解决方案:您必须在自定义方法中使用 Session.set(),并在模板辅助方法中使用 Session.get() 来检索该变量。
【问题讨论】:
标签: javascript meteor viewmodel