首页 > Web开发 > 详细

ExtJS 细节

时间:2017-01-12 22:55:19      阅读:347      评论:0      收藏:0      [点我收藏+]
1. 如何防止每次点击同一个叶子节点时,都新开一个tab:
  1. var groupTree = Ext.create(‘Ext.tree.Panel‘, {//创件树
  2. rootVisible: false,
  3. title : ‘基准点设置‘,
  4. region : ‘west‘,
  5. //useArrows: true,
  6. width : ‘15%‘,
  7. border:false,
  8. animate : false,
  9. store: TreeStore,
  10. listeners : {
  11. itemclick: function(tree,r,item,index,e,eOpts){
  12. var n = tab.getComponent(r.get(‘leaf‘));
  13. if(r.get(‘leaf‘)){
  14. if (!n) { // 判断是否已经打开该面板
  15. n = tab.add({
  16. title : ‘基准点‘+r.get(‘text‘)+‘信息查看‘,
  17. closable : true, // 通过html载入目标页
  18. html : ‘<iframe scrolling="auto" frameborder="0" width="100%" height="100%" src="‘+r.get(‘is‘)+‘"></iframe>‘
  19. });
  20. }
  21. tab.setActiveTab(n);
  22. }
  23. }
  24. }
  25. });
如上述代码第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方法使用的注意事项:
问题:

  1. store0.reload({params:{start:0, limit:10}});
  2.  alert(store0.getCount());
  3.  alert(store0.getAt(0).get(‘value1‘))

观察store0.getCount()的值,
好像没有reload(或load)成功。其实reload确实成功了。由于store.reload(或store.load)其实是个异步方法,由于采用了异步加载,因此该方法执行完毕后,数据不是按照reload()(或load())方法下一个语句的顺序可以获取得到的。reload之后的结果不能在reload函数后马上显示。
如果需要改变这种方法,那么应该将store.getCount放在load的callback中。 

解决方法:

  1. store0.reload({params:{start:0, limit:10},
  2.   callback : function() {
  3.            alert(store0.getCount());
  4.            alert(store0.getAt(0).get(‘value1‘))
  5.         }});

这样使用callback就可以取到store0重新加载后的最新值。


3.ExtJs提交form表单后的success回调函数

默认可以添加回调函数,其中值得注意的事,如果出现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]);
    }
});






ExtJS 细节

原文:http://www.cnblogs.com/minds-hacker/p/6279854.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!