2016-04-07 4 views
1

Здравствуйте, я получаю сообщение об ошибке из приведенного ниже кода и не знаю, почему, потому что я думал, что определяю его. Я хочу убедиться, что мой код работает правильно, прежде чем добавить сложность в отчет.Пользовательский HTML - Rally TreeGrid

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); 
}, 

}); 

«Ошибка: успех обратного вызова для будущих периодов трансформированного результате Отложенный преобразованного результате Отложенный бросил: ReferenceError: myGrid не определен»

Я новичок в этом, так что любая помощь будет принята с благодарностью!

+0

Код действительно работает, но он хотел выяснить причину ошибки, прежде чем двигаться вперед – arf

ответ

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'); 
0

Вы определения myGrid внутри success области видимости функции в, а затем пытается использовать его в конце функции _createGrid, где она undefined. Я предполагаю, что вы пытаетесь сделать это так, потому что неправильно связан с функцией 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); 
     } 
    }); 
}, 
Смежные вопросы