ExtJS 细节
1. 如何防止每次点击同一个叶子节点时,都新开一个tab:
3.ExtJs提交form表单后的success回调函数
var groupTree = Ext.create('Ext.tree.Panel', {//创件树rootVisible: false,title : '基准点设置',region : 'west',//useArrows: true,width : '15%',border:false,animate : false,store: TreeStore,listeners : {itemclick: function(tree,r,item,index,e,eOpts){var n = tab.getComponent(r.get('leaf'));if(r.get('leaf')){if (!n) { // 判断是否已经打开该面板n = tab.add({title : '基准点'+r.get('text')+'信息查看',closable : true, // 通过html载入目标页html : '<iframe scrolling="auto" frameborder="0" width="100%" height="100%" src="'+r.get('is')+'"></iframe>'});}tab.setActiveTab(n);}}}});
如上述代码第12行,var n = tab.getComponent(r.get('leaf')); 该行语句的意思的获取叶子节点为该tab控件,但是我们正确的做法应该是获取该叶子节点的id,如果是获取leaf,则每次点击,在下面做判断if (!n) 的时候都会是true ,而从后台返回的id则不一样,可以保证第二次点击叶子节点的时候,判断的地方if (!n) 为false,另外,需要在上述代码16行加入itemId,以表示每次打开的tab唯一,故而不会发生每次点击叶子节点都会新开一个tab的情况。
2. store的getCount方法使用的注意事项:
问题:
store0.reload({params:{start:0, limit:10}});alert(store0.getCount());alert(store0.getAt(0).get('value1'))
观察store0.getCount()的值,
好像没有reload(或load)成功。其实reload确实成功了。由于store.reload(或store.load)其实是个异步方法,由于采用了异步加载,因此该方法执行完毕后,数据不是按照reload()(或load())方法下一个语句的顺序可以获取得到的。reload之后的结果不能在reload函数后马上显示。
如果需要改变这种方法,那么应该将store.getCount放在load的callback中。
解决方法:
store0.reload({params:{start:0, limit:10},callback : function() {alert(store0.getCount());alert(store0.getAt(0).get('value1'))}});
这样使用callback就可以取到store0重新加载后的最新值。
默认可以添加回调函数,其中值得注意的事,如果出现404或500错误,才会执行failure,如果响应成功,就执行success,Ext默认规定:如果响应的json中有变量success,且值部位true,同时响应的json中包含errors:{},则认为是业务错误;如果不包含errors{},则认为是连接失败。
4.Ext.Msg.alert等弹出框在手机或页面上,点击确定后不消失
方法一:
在app.js的launch方法里面加上
Ext.Msg.defaultAllowedConfig.showAnimation = false
Ext.Msg.defaultAllowedConfig.hideAnimation = false
方法二(这个估计会禁用掉很多地方的动画效果):
在app.js的launch方法里面加上
Ext.define('Ext.Component', {
override: 'Ext.Component',
show: function (animation) {
return this.callParent([false]);
},
hide: function (animation) {
return this.callParent([false]);
}
});

浙公网安备 33010602011771号