Meteor Template实例生命周期

时间:2015-05-07 02:01:39

标签: meteor

我将字符串保存在模板实例的数据对象中; 字符串在template.rendered上初始化,并且可以由模板上的控件更新;然后将其提交给将其值保存在集合中的方法:

Template.myTemplate.rendered = function() {
    this.data.myValue = "aaa";
}

Template.myTemplate.events({
     "click #updateMyValue": function(event, template) {
         if (template.data.myValue = "aaa") template.data.myValue = "bbb";
         else template.data.myValue = "ccc";
     },
     "click #submit": function(event, template) {
         Meteor.call('update', template.data);
     }
});

我第一次点击#submit,一切正常;但是后来template.data.myValue变得未定义;单击#submit不会导致刷新页面,所以我希望模板实例能够保留其所有数据; 有人可以解释为什么" myValue"失去了?

1 个答案:

答案 0 :(得分:1)

不要在template.data上设置属性,它是包含模板当前数据上下文(只读)的Meteor保留属性。

您似乎在=(变量分配)和==(比较运算符)之间感到困惑。

在单页应用内部,您应始终阻止表单提交事件的默认行为发生。

请尝试使用此代码:

Template.myTemplate.onRendered(function() {
  this.myValue = "aaa";
});

Template.myTemplate.events({
  "click #updateMyValue": function(event, template) {
    if (template.myValue == "aaa"){
      template.myValue = "bbb";
    }
    else{
      template.myValue = "ccc";
    }
  },
  "click #submit": function(event, template) {
    event.preventDefault();
    Meteor.call("update", template.myValue);
  }
});