0
根據docs,我應該能夠在模型上定義函數,然後在該模型的實例上調用該函數。Extjs4 - 在模型上定義方法
至少在我從代理加載模型的情況下,它不起作用。
我的模型:
Ext.define('MyApp.model.Detail', {
extend: 'Ext.data.Model',
fields: [
'someField',
'anotherField',
],
someFunction: function() {
//do something
},
proxy: {
type: 'ajax',
url: 'http://example.com/details',
reader: {
type: 'json',
root: 'data',
totalProperty: 'total',
successProperty: 'success',
}
},
});
商店:
Ext.define('MyApp.store.DetailStore', {
extend: 'Ext.data.Store',
storeId: 'detailStore',
model: 'MyApp.model.Detail',
});
控制器:
Ext.define('MyApp.controller.appController', {
extend: 'Ext.app.Controller',
init: function() {
this.getDetailStoreStore().addListener('load', this.newDetails, this);
},
stores: ['DetailStore'],
models: ['Detail'],
views : ['DetailView], //exists, not copied into question
newDetails: function(store, records) {
var details = records[0].data;
details.someFunction(); // Uncaught TypeError: Object #<Object> has no method 'someFunction'
}
});
調用data.someFunction當newDetails功能,發生錯誤()。
我有錯誤的期望嗎?
非常感謝您的快速回復,這是完全正確的。 :)另一個細節是,在某些功能中,您需要調用this.data來獲取實際填充的數據字段。再次感謝! – romacafe
你應該真的使用this.get()而不是訪問原始數據屬性。 –