Meteor.js,根据模板数据更新视图值,但不更新记录本身(即仅视图模型)



当我在任何 JS 函数中更改模板数据时,我试图让我的 meteor 模板显示更新值,但它似乎没有做任何事情。这是代码:

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",但更新该视图模型也不会更新视图。

有什么办法可以做到这一点吗?感谢您的任何帮助。

解决方案:您必须在自定义方法中使用 Session.set(),并使用 Session.get() 在模板帮助程序方法中检索该变量。

一种解决方案是使用 Session。

当日期更改时,您可以调用Session.set('dateCreated', newDate)。

dateCreated 的模板帮助程序将只返回 Session.get('dateCreated')。

要被动地更改值,您需要有一个返回反应变量的帮助程序。

Template.editorder.helpers({
  dateCreated: function() {
    return Session.get('dateCreated');
  }
});

onDateChanged 函数将如下所示:

$('.datepicker').datepicker({
  onDateChanged: function(date) {
    Session.set('dateCreated', date);
  }
});

相关内容

  • 没有找到相关文章

最新更新