0

我正在尝试使用商店将数据加载到列表中。当我运行我的代码时,列表值为空白,列表不是空的,但它是空白的。

这是我的控制器的一部分,我尝试在其中添加要存储的数据。

  var loginStore = Ext.getStore('instance');
               var record = [{id:id, issued_at:issued, instance_url:instance, signature:sig, access_token:access, myBaseUri:baseUri}];
               loginStore.add(record);

这是我列出的视图的一部分

{
               xtype :'list',
               id : 'list1',
               loadingText: 'Loading Projects',
               emptyText: '<div>No Projects Found</div>',
               onItemDisclosure: true,
               itemTpl: '<div>{issued_at}</div>',
               height: 320,
               store : 'instance'

}

这不起作用但是当我替换itemTpl:'<div>{issued_at}</div>'

itemTpl:'<div>{id}</div>'

它似乎工作。我究竟做错了什么?

这是我的商店:

Ext.define('GS.store.instance',{
extend: 'Ext.data.Store',
requires: ['GS.model.login'],
config:{
    model: 'GS.model.login'

}
});

这是我的模型:

Ext.define('GS.model.login',{
extend: 'Ext.data.Model',
fields:[
            {name: 'id', type: 'string'},
            {name: 'issued_at', type:'string'},
            {name: 'instance_url', type:'string'},
            {name: 'signature', type:'string'},
            {name: 'access_token', type:'string'},
            {name: 'myBaseUri', type:'string'}
      ]

});         
4

4 回答 4

0

事实证明,我的模型定义中缺少配置选项。

Ext.define('GS.model.login',{
extend: 'Ext.data.Model',
config:{
    fields:[ 'id','issued_at','instance_url','signature','access_token','myBaseUri' ]
}


});         
于 2012-10-25T21:00:28.417 回答
0

当您在使用 id 而不是issued_at 时获得列表中的值时,问题似乎不是函数/模型/存储,而是issued_at 变量本身。你确定它正在进入商店?

尝试在您的商店加载后添加它,或者使用例如 chrome 在浏览器中运行它

console.log(Ext.getStore("instance").getAt(0).data.id);
console.log(Ext.getStore("instance").getAt(0).data.issued_at);

您应该会从第一个数据项中看到一些结果。

如果你得到一个 id,但只是为发出的_at“未定义”,你就会知道问题出在记录上。在这种情况下,我会issued在您尝试将其添加到存储之前尝试记录您的变量,以确保它已被实际定义。

如果需要,请报告结果以获得进一步的帮助/讨论。

于 2012-10-25T12:27:22.067 回答
0

您创建记录的方式是错误的。试试这种方式:

var record = Ext.create('YOUR_MODEL', {
    id : id,
    issued_at: issued,
    instance_url: instance,
    ...
});

希望这可以帮助。

于 2012-10-24T00:16:17.383 回答
0

尝试使用以下示例:

Ext.define('Contact', {
    extend: 'Ext.data.Model',
    config: {
        fields: ['firstName', 'lastName']
    }
});

var store = Ext.create('Ext.data.Store', {
   model: 'Contact',
},

   data: [
       { firstName: 'Tommy',   lastName: 'Maintz'  },
       { firstName: 'Rob',     lastName: 'Dougan'  },
       { firstName: 'Ed',      lastName: 'Spencer' },
       { firstName: 'Jamie',   lastName: 'Avins'   },
       { firstName: 'Aaron',   lastName: 'Conran'  },
       { firstName: 'Dave',    lastName: 'Kaneda'  },
       { firstName: 'Jacky',   lastName: 'Nguyen'  },
       { firstName: 'Abraham', lastName: 'Elias'   },
       { firstName: 'Jay',     lastName: 'Robinson'},
       { firstName: 'Nigel',   lastName: 'White'   },
       { firstName: 'Don',     lastName: 'Griffin' },
       { firstName: 'Nico',    lastName: 'Ferrero' },
       { firstName: 'Jason',   lastName: 'Johnston'}
   ]
});

Ext.create('Ext.List', {
   fullscreen: true,
   itemTpl: '<div class="contact">{firstName} <strong>{lastName}</strong></div>',
   store: store,
});
于 2012-10-24T07:41:18.250 回答