Javascript 我如何知道enyo.模型是否已修改?
我有这个密码 但是,当我单击按钮测试时,不要在我的应用程序中输入函数modechanged,只在创建de model时输入 代码位于此链接中:Javascript 我如何知道enyo.模型是否已修改?,javascript,enyo,Javascript,Enyo,我有这个密码 但是,当我单击按钮测试时,不要在我的应用程序中输入函数modechanged,只在创建de model时输入 代码位于此链接中: 这是因为当设置App的model属性changes/时,会执行modelChanged()函数。由于enyo.Model不是一个enyo.Component,因此它不能获得自动属性更改功能。检查如何在此处添加观察者您的代码当前仅触发一次(当您执行app.set(“model”,model);时)。由于更改模型上的属性实际上不会更改app的model属性
这是因为当设置App的model属性changes/时,会执行modelChanged()函数。由于enyo.Model不是一个enyo.Component,因此它不能获得自动属性更改功能。检查如何在此处添加观察者您的代码当前仅触发一次(当您执行
app.set(“model”,model);
时)。由于更改模型上的属性实际上不会更改app
的model
属性,因此不会触发modelChanged
事件
如果您希望在模型的任何属性发生更改时收到通知,则需要使用不同的方法。您要查看的是事件发射器mixin的文档:
您将需要执行以下操作:
create: function() {
this.inherited(arguments);
this.model.on("*", this.modelUpdated, this);
},
modelUpdated: function(sender, e, props) {
this.log("Model was updated");
}
这将监视任何更改。您可能希望获得更具体的更改,例如使用
“更改”
,而不是“*”
。如果要监视对模型上特定属性的更改,则需要对模型进行子类化,并在模型中放置更改处理程序。无论何时使用“set”方法设置模型属性,都应调用modelChanged,但在设置模型属性时不应调用。更改后的方法不需要组件。啊,确实如此但是需要enyo.Object。即使模型不是对象,它们也支持“已更改”的方法。
create: function() {
this.inherited(arguments);
this.model.on("*", this.modelUpdated, this);
},
modelUpdated: function(sender, e, props) {
this.log("Model was updated");
}