无法抛出事件enyo.model

时间:2015-10-27 08:09:41

标签: javascript jquery enyo

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

问题出在哪里?

1 个答案:

答案 0 :(得分:1)

好的,有几件事。

  1. 它必须是Model或ModelController(可能是Collection)才能拥有fetch()方法。
  2. 模型不是基于enyo.Object,因此它们的行为与其他Enyo对象略有不同,最重要的是,在这种情况下,与Enyo事件系统的工作方式有关。我猜你在解析数据时可以从模型中发出一个事件。
  3. 我对如何/何时运行gotData()感到困惑。如果你想在解析数据时做一些事情(我假设你这样做,因为你有parse:true选项集),那么你应该提供parse()方法作为覆盖。在其中,您将获得原始数据并返回您希望模型实际拥有的内容。
  4. 我认为您可能需要更仔细地了解enyo.Model的工作原理。