我有以下代码。当我收到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/

10-13 01:42