我将字符串保存在模板实例的数据对象中; 字符串在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"失去了?
答案 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);
}
});