我有以下代码。当我收到ajax查询的响应时,我正在尝试将事件发送给其他类型。我正在使用enyo JsonpSource。
new enyo.JsonpSource({ name: "json" });
//new enyo.AjaxSource({ name: "json" });
enyo.kind({
name: "AccountSetup",
//kind: "enyo.Model",
source: "json",
options: { parse: true },
getUrl: function () {
return "https://223.30.248.51:1926/HotelInfoServlet?Q=ACTIVATE&UA=1300029800&MODE=JSON";
},
events:
{ onMyEvent: ''
},
gotData : function(){
//this.inherited(arguments);
console.log("In gotData \n");
// console.log(tmp);
console.log(accountSetup);
this.doMyEvent({answer:accountSetup});
},
//this.doMyEvent({answer:accountSetup});
success : function(){
alert("Here!\n");
},
});
var accountSetup = new AccountSetup();
accountSetup.fetch();
/* process callback data*/
function callback (data)
{
if (data.type == "accountsetup") {
console.log(data);
console.log(this);
var acsetup = new AccountSetup();
accountSetup= data;
//acsetup = data;
console.log(acsetup);
//acsetup.doMyEvent({answer : data});
//accountSetup.gotData();
acsetup.gotData();
}
};
在此,我得到错误
Uncaught TypeError: accountSetup.fetch is not a function
。如果我删除了
enyo.model
的注释,则会出现以下错误:Uncaught TypeError: this.doMyEvent is not a function
。问题出在哪里?
最佳答案
好吧,有几件事。
它必须是Model或ModelController(可能是Collection)才能具有fetch()方法。
模型不是基于enyo.Object,因此它们的行为与其他Enyo对象有些不同,最重要的是,在这种情况下,就Enyo事件系统的工作方式而言。我想,当您解析模型的数据时,可以从模型发出事件。
我对gotData()的运行方式/时间感到困惑。如果您想在解析数据时执行某些操作(由于您已设置了parse:true选项,所以我想这样做),则应提供parse()方法作为替代。在其中,您将获取原始数据并返回您希望模型实际拥有的内容。
我认为您可能需要更仔细地研究enyo.Model的工作原理。
关于javascript - 无法引发事件enyo.model,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33362712/