您好我从下面的代码收到错误,不知道为什么,因为我以为我在定义它。在添加报表的复杂性之前,我想确保我的代码正常工作。
launch: function() {
this._createGrid();
},
_createGrid: function() {
Ext.create('Rally.data.wsapi.TreeStoreBuilder').build({
models: ['PortfolioItem/Initiative'],
autoLoad: true,
enableHierarchy: true
}).then({
success: function(store) {
var myGrid = Ext.create('Ext.Container', {
items: [{
xtype: 'rallytreegrid',
columnCfgs: ['Name', 'Owner'],
store: store
}],
renderTo: Ext.getBody()
});
}
});
this.add(myGrid);
},
});
"错误:Deferred的延迟转换结果的延迟转换结果的成功回调抛出:ReferenceError:myGrid未定义"
我是新手,所以任何帮助都将不胜感激!
答案 0 :(得分:0)
您在myGrid
函数范围内定义了success
,然后尝试在_createGrid
函数的末尾使用它undefined
this
。我假设您正在尝试这样做,因为success
未在_createGrid: function() {
var self = this;
Ext.create('Rally.data.wsapi.TreeStoreBuilder').build({
models: ['PortfolioItem/Initiative'],
autoLoad: true,
enableHierarchy: true
}).then({
success: function(store) {
var myGrid = Ext.create('Ext.Container', {
items: [{
xtype: 'rallytreegrid',
columnCfgs: ['Name', 'Owner'],
store: store
}],
renderTo: Ext.getBody()
});
self.add(myGrid);
}
});
},
函数内正确绑定。试试这个:
connection.connect()
答案 1 :(得分:0)
您遇到的问题可能是由于在ExtJS中组件和容器的行为方式存在一些混淆,并且上面的答案中提到了this
范围问题。
以下是我的写作方式:
_createGrid: function() {
Ext.create('Rally.data.wsapi.TreeStoreBuilder').build({
models: ['PortfolioItem/Initiative'],
autoLoad: true,
enableHierarchy: true
}).then({
success: function(store) {
//The app class is already a container, so you can just
//directly add the grid to it
this.add({
xtype: 'rallytreegrid',
itemId: 'myGrid',
columnCfgs: ['Name', 'Owner'],
store: store
});
},
scope: this //make sure the success handler executes in correct scope
});
}
您也不需要保留myGrid
参考,因为您始终可以使用ExtJS的内置组件查询功能找到它:
var myGrid = this.down('#myGrid');