我的应用程序中有一个要求,我需要根据从服务器端获取的值来显示UI组件(如文本字段,组合框)。确切地说,我在页面上有一个组合框,当用户更改我需要将所选值发送到服务器的值时,可以获取有关需要显示的内容的信息。不使用MVC我实现如下
现在我正在尝试使用ExtJS MVC,所以我有两个问题
代码我想设置来自商店的事件,例如&datachanged'在控制器如下 -
this.control({
'viewport > #content-panel' : {
render : this.createMainTabs
}
});
答案 0 :(得分:2)
除了sha的回复,我可以说你可以在你的控制器中设置你的商店事件处理程序。例如,你有一个带商店的组合框,所以你可以像这样写:
this.control({
'#myCombo' : {
afterrender : this.setupStoreListeners
}
});
....
setupStoreListeners: function(combo){
var store = combo.store;
store.on('datachanged', //.....);
}
还有一件事,正如Sha所写,你可以随时按名称存储,但我只在需要在多个控制器之间共享商店实例时才使用它。如果我只在一个控制器中需要这个存储,我只需将它保存在这个控制器中:
setupController: function(){
this.myStore = this.getCombo().store; // now you could use this.myStore anywhere you need
}
答案 1 :(得分:1)
要在控制器中获取商店对象只需使用this.getStore('StoreName')
,默认情况下每个商店都有自己的实例,它是否绑定到您拥有的任何UI组件并不重要。
获得商店对象后,您可以使用您喜欢的任何方法订阅任何商店事件。我通常喜欢
store.on('load', {...})
此外,我不会在视图代码中更改UI中的任何内容。我会把所有这些自定义都放到控制器代码中。