2015-05-07 110 views
1

我在模板實例的數據對象中保存字符串; 字符串在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

不要在template.data上設置屬性,它是包含模板當前數據上下文(只讀)的流星保留屬性。

您似乎在=(變量賦值)和==(比較運算符)之間混淆。

在單頁面應用程序中,您應始終防止發生表單提交事件的默認行爲。

試試這個代碼,而不是:

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); 
    } 
});