自定义HTML - Rally TreeGrid

时间:2016-04-07 20:19:08

标签: javascript rally

您好我从下面的代码收到错误,不知道为什么,因为我以为我在定义它。在添加报表的复杂性之前,我想确保我的代码正常工作。

 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未定义"

我是新手,所以任何帮助都将不胜感激!

2 个答案:

答案 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');