我有以下代码(马虎,我知道......第一个javascript应用程序)。我试图让一个组合框填充一个属于给定版本的功能列表(在第一个组合框中选择)。几乎所有东西现在都正常工作,除了每次我第一次点击功能组合框时,它会加载所有功能并完全忽略过滤器。即使我首先更改了发布框,功能框仍然只在第一次单击时填充所有功能。随后的时间会显示正确过滤的功能。
更奇怪的是,我已经尝试将功能存储中的总记录写入控制台,因此我可以看到这种情况何时发生。首次创建要素组合框时,其中包含正确的记录数。但是,只要我第一次单击功能组合框,它就会触发组合框的“加载”监听器,并拉入所有功能,完全忽略过滤器。
我很高兴,我已经尝试了很多东西来调试这个,而且此时没有其他选择。有没有人有任何想法,为什么它会首先加载正确的数据,然后重新加载它并忽略第一次点击过滤器?
Ext.define('CustomApp', {
extend: 'Rally.app.App',
componentCls: 'app',
launch: function() {
var relComboBox = Ext.create("Rally.ui.combobox.ReleaseComboBox", {
fieldLabel: 'Choose a Release',
width: 300,
listeners: {
ready: function(combobox) {
this._releaseRef = combobox.getRecord().get("_ref");
this._loadFeatureInfo();
},
select: function(combobox) {
this._releaseRef = combobox.getRecord().get("_ref");
this._loadFeatureInfo();
},
scope: this
}
});
this.add(relComboBox);
},
_loadFeatureInfo: function() {
var featureStore = Ext.create("Rally.data.WsapiDataStore", {
model: "portfolioitem/Feature",
fetch: ["Name", "_ref"],
autoLoad: true,
filters: [
{
property: "Release",
operator: "=",
value: this._releaseRef
}
],
listeners: {
load: function(store) {
this._updateFeatureBox(store);
},
scope: this
}
});
},
_createFeatureBox: function(featureStore) {
this._featureComboBox = Ext.create("Rally.ui.combobox.ComboBox", {
fieldLabel: 'Choose a Feature to move',
store: featureStore,
listeners: {
select: function (combobox) {
this._featureRef = combobox.getRecord().get("_ref");
//calls method to get and display children of this feature in a grid
},
scope: this
}
});
this.add(this._featureComboBox);
},
_updateFeatureBox: function(featureStore) {
if (this._featureComboBox === undefined) {
this._createFeatureBox(featureStore);
} else {
this._featureComboBox.clearValue();
this._featureComboBox.bindStore(featureStore);
//calls method to get and display children of this feature in a grid
}
}
答案 0 :(得分:0)
这可能是由featureStore加载两次引起的问题:一旦你创建它,并且一旦用户打开组合框以选择一个特征,组合框也会告诉它再次加载。
我在故事中遇到了一个与组合框很相似的问题,而且我会向Matt Greer回答的甜甜圈买单:
Strange Load behavior with Rally.ui.combobox.ComboBox
对我的问题,也是你的答案......