this.loadSmt = function(argPanel)
{
this.store1 = new Ext.data.JsonStore({
url : 'URL1',
totalProperty : 'total',
successProperty : 'success',
root : 'root1',
fields : [
{name: 'data1'},
{name: 'data2'}
]
});
this.store2 = new Ext.data.JsonStore({
url : 'URL2',
totalProperty : 'total',
successProperty : 'success',
root : 'root2',
fields : [
{name: 'data21'},
{name: 'data22'},
{name: 'data23'},
{name: 'data24'},
{name: 'data25'}
]
});
this.store1.on('beforeload', function() {
this.store1.baseParams = {
argID: myID
};
}, this);
this.store2.load({
callback : function() {
var graphOwner = argPanel;
var graphDataArr = [];
var i = 0;
this.data.each(function(item, index, totalItems) {
var data1 = item.data['data1'];
var data2 = item.data['data2'];
// create arraystore data for graph
var tempArr = new Array();
tempArr.push(data1);
tempArr.push(data2);
graphDataArr[i] = tempArr;
i++;
});
this.GraphPanel = this.getMyGraph(graphDataArr);
}
}, this);
};
this.getMyGraph = function(argGraphValue)
{
// do something
}
当我运行此代码时,我得到了
TypeError:this.getMyGraph不是函数
错误,当我使用
时this.data.each
在商店回调中的功能,我不能使用
this.getMyGraph
功能。我认为这是一个范围问题,如何将作为参数的范围传递给函数或如何修复此错误?
答案 0 :(得分:7)
你通过范围的方式是对的。您需要使用加载选项的范围参数。
this.store2.load({
callback : function(records, operation, success) {
...
},
scope: this
});
http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.Store-method-load