javascript - Meteor.js,基于模板数据更新 View 值,而不是记录本身(即仅 View 模型)

标签 javascript meteor viewmodel

当我在任何 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 未反射(reflect)在 View 中。我认为显示更新的唯一方法是更新已发布的数据对象本身,但我不想将更改发送到数据库。

我想也许这样做的方法是使用模板助手,但在我的测试中,我似乎也无法让它工作。我尝试设置一个 Template.editorder.viewmodel = function() { } 方法,该方法返回一个全局对象范围,我在 Template.editorder.rendered() 函数中将其指定为“this.data”,但更新了它viewmodel 也没有更新 View 。

有什么办法吗? 感谢您的帮助。

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

最佳答案

一种解决方案是使用 Session。

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

dateCreated 的模板助手将简单地返回 Session.get('dateCreated')。

关于javascript - Meteor.js,基于模板数据更新 View 值,而不是记录本身(即仅 View 模型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27095656/

相关文章:

javascript - 键(窗口)不返回所有成员

javascript - 如何访问 Angularjs 中表单提交的数据?

javascript - 调用方法时出错 'addReservation' : Internal server error [500]

mongodb - Meteor 如何处理多个用户的同一订阅?

c# - 有没有什么时候我应该将 ViewModel 传递到我的 Controller 的一个操作方法中?

wpf - 将 ComboBox SelectedIndex 绑定(bind)到 ListView ItemsSource

JavaScript 原型(prototype)继承 - 函数未呈现正确的警报

javascript - Meteor 的简单架构 - 如何使用 JS 检查架构内散列中是否存在值?

asp.net-mvc - 使用 ViewModels、EditModels 和 AutoMapper 的 ASP.NET MVC 引用实现

javascript - 如何制作与横幅背景相同的固定标题?