未捕获的typeError:无法读取未定义的属性'isModel'

时间:2012-10-16 22:51:51

标签: sencha-touch

我在执行代码后遇到此错误。它说“未捕获的类型错误:无法读取属性'isModel'未定义”。我试图使用我定义的名为“model.login”的模型和带有虚拟数据的商店显示列表。

Ext.Loader.setConfig({
enabled: true,
paths:{
    'model' : 'app/model',
    'store' : 'app/store'
}

});
Ext.application({
    name: 'GS',
    launch: function(){
        var myStore = null;
        Ext.require('model.login', function(){
            var login = Ext.create('model.login');
            myStore = new Ext.data.Store({
                model: login,
                data:[
                      {id:'09803' , issued_at: 'thisurl', instance_url:'https', signature:'token', access_token:'ser'}
                      ]
            });
        });
        this.viewport = new Ext.Panel({
            fullscreen: true,
            items:[
                   {
                       xtype: 'list',
                       itemTpl: '{id}',
                       store: myStore
                   }
                   ]
        });
    }

});

1 个答案:

答案 0 :(得分:2)

在加载model.login并创建商店之前,您正在进行创建视口的调用。移动代码以将视口创建为Ext.require的回调。

此外,在将模型传递到商店时,您传递的是模型构造函数,而不是它的实例。

Ext.application({
  name: 'GS',
  launch: function(){
    this.viewport = 
    var me = this;
    Ext.require('model.login', function(){                
      myStore = new Ext.data.Store({;

      me.viewport = new Ext.Panel({
        fullscreen: true,
        // You can pass a single item into item
        items:{
          xtype: 'list',
          itemTpl: '{id}',
          store: myStore
        }
      });
    });
  }
});

请注意,有一种更好的方法,您可以告诉应用程序要加载哪些模型并内联一些调用以使其更易于阅读

Ext.application({
  name: 'GS',
  models: 'login', // looks in GS.model.login
  launch: function(){
    me.viewport = new Ext.Panel({
      fullscreen: true,
      // You can pass a single item into item
      items:{
        xtype: 'list',
        itemTpl: '{id}',
        store: {
          model: 'model.login', // or GS.model.login without quotes
          data:[              
            {id:'09803' , issued_at: 'thisurl', instance_url:'https', signature:'token', access_token:'ser'}]
          }
       }
    });
  }
});