Образец ошибки приложения Rally
Я пытаюсь создать новое приложение для Rally, и я новичок и в Rally SDK, и в JavaScript. Я нашел руководство по созданию вашего первого приложения Rally и попытался начать там. Тем не менее, я получаю ошибку при следовании примеру.
Uncaught TypeError: Cannot call method 'refresh' of undefined
Сначала я предположил, что я что-то делаю не так, но в конце концов скопировал и вставил весь пример приложения, только чтобы обнаружить, что это происходит и для примера проекта.
Все, что покажет мне правильное направление успешной отладки, будет оценено!
Целиком App.js
что я использую (из примера) это:
Ext.define('CustomApp', {
extend: 'Rally.app.App',
componentCls: 'app',
items: { html: '<a href="https://help.rallydev.com/apps/2.0rc2/doc/">App SDK 2.0rc2 Docs</a>' },
launch: function () {
this.iterationCombobox = this.add({
xtype: 'rallyiterationcombobox',
listeners: {
change: this._onIterationComboboxChanged,
ready: this._onIterationComboboxLoad,
scope: this
}
});
},
_onIterationComboboxLoad: function () {
var addNewConfig = {
xtype: 'rallyaddnew',
recordTypes: ['User Story', 'Defect'],
ignoredRequiredFields: ['Name', 'ScheduleState', 'Project'],
showAddWithDetails: false,
listeners: {
beforecreate: this._onBeforeCreate,
scope: this
}
};
this.addNew = this.add(addNewConfig);
var cardBoardConfig = {
xtype: 'rallycardboard',
types: ['Defect', 'User Story'],
attribute: 'ScheduleState',
storeConfig: {
filters: [this.iterationCombobox.getQueryFromSelected()]
}
};
this.cardBoard = this.add(cardBoardConfig);
},
_onBeforeCreate: function (addNewComponent, record) {
record.set('Iteration', this.iterationCombobox.getValue());
},
_onIterationComboboxChanged: function () {
var config = {
storeConfig: {
filters: [this.iterationCombobox.getQueryFromSelected()]
}
};
this.cardBoard.refresh(config);
}
});
1 ответ
Решение
Попробуйте этот код вместо этого. Источник доступен в этом репозитории git hub.
Ext.define('CustomApp', {
extend: 'Rally.app.TimeboxScopedApp',
componentCls: 'app',
scopeType: 'iteration',
onScopeChange: function(scope) {
this._iteration = scope.record.get('_ref');
if (!this.down('#addNew')) {
var addNewConfig = {
xtype: 'rallyaddnew',
itemId: 'addNew',
recordTypes: ['User Story', 'Defect'],
ignoredRequiredFields: ['Name', 'ScheduleState', 'Project'],
showAddWithDetails: false,
listeners: {
beforecreate: this._onBeforeCreate,
scope: this
}
};
}
this.addNew = this.add(addNewConfig);
if(!this.board) {
this.board = this.add({
xtype: 'rallycardboard',
storeConfig: {
filters: [scope.getQueryFilter()]
}
});
} else {
this.board.refresh({
storeConfig: {
filters: [scope.getQueryFilter()]
}
});
}
this.iteration = scope.getRecord();
},
_onBeforeCreate: function(addNewComponent, record) {
record.set('Iteration', this._iteration);
}
});