【发布时间】:2014-08-31 14:51:56
【问题描述】:
如下所示,我有一个名为“MenuPanel”的导航视图。
每个“Child”记录都有一个菜单,如果有多个child,我想直接进入现有的child menu,否则我想显示children list view('childlist' xtype)。
视图初始化后,有 2 个选项(如果我错了,请修复我):
- 商店已加载
- 商店尚未加载
我使用 isLoaded() 函数处理它们,然后添加 on('load') 以防它未加载。但是,我相信有更好的方法可以做到这一点,也许这不应该在初始化功能上。
关于最佳实践的任何想法?
MenuPanel.js
Ext.define('eMaliApp.view.MenuPanel', {
extend: 'Ext.NavigationView',
xtype: 'menupanel',
requires: [
'eMaliApp.view.child.List',
'eMaliApp.view.shared.TodayMenu'
],
config: {
store: 'children'
},
initialize: function() {
this.callParent(arguments);
var store = Ext.getStore('children');
var me = this;
var onStoreReady = function() {
var data = store.getData();
console.log('store data:', data);
console.log('me:', me);
if (_.isEmpty(data) || data.items.length > 1) {
console.log('load children list');
// add view
var centersList = {
title: 'Child List',
xtype: 'childlist',
store: 'children',
showMenu: true
};
me.add(centersList);
} else {
// today menu
console.log('today menu');
};
}
if (store.isLoaded()) {
console.log('Store is loaded');
onStoreReady();
} else {
console.log('Store is NOT loaded');
store.on('load', onStoreReady);
}
}
});
【问题讨论】: