javascript - Extjs 4创建工具栏项目宽度ajax请求

标签 javascript extjs extjs4 extjs-mvc

我必须创建一个工具栏,根据 ajax 请求计算其项目。看看函数 initComponent 和 buildItems,我没有得到相同的 Toolbar.items 元素结果,甚至 Ajax 请求的运行也如您在调用 console.log 后在 builsItems 方法中看到的那样正确完成。 请帮助(我是初学者,我正在使用 Extjs 4)非常感谢。

Ext.define('Dev.view.layout.Toolbarapp',{
   extend:'Ext.toolbar.Toolbar',
   alias :'widget.toolbarapp',
   border:false,
   height:35,
   initComponent:function(){
           this.items=[];
           Ext.Ajax.disableCaching=false;
           Ext.Ajax.request({
                        url : '/gdev/jsontest',
                        callback:this.buildItems,       
                        scope:this
           });  
       console.log(this.items); //THE RESULT IS []    
       this.callParent(arguments);
   },   
   buildItems:function(options, sucess, response){      
        if (sucess==true) {
            var listItems=[];
            var applist=Ext.JSON.decode(response.responseText);
            Ext.each(applist, function(rec){
                   listItems.push({'text'     :rec.appid,
                                   'iconCls'  :rec.iconcls,
                                   'operation':rec.appcode
                                  }
                                );                     
                 });
            this.items=listItems;   
            console.log(this.items); //THE RESULT IS [Object { text=100,      
    iconCls="appsysadmin", operation="appsysadmin"}, Object { text=101, 
    iconCls="appmailxe", operation="appmailxe"}]
        }
        else {
            Ext.MessageBox.alert('Error','not found');
        }

   }
   });

最佳答案

将对象表示法组件分配给 this.items 仅在 initComponent 中的 callParent 之前有效。

之后,这些项目已经初始化,ext 将不会接受对其的更改。您应该使用工具栏组件的 add method相反。

在 buildItems 方法中,只需使用对象符号组件调用 add 即可,而不是构建数组:

var me = this;
Ext.each(applist, function(rec){
                   me.add({'text'     :rec.appid,
                                   'iconCls'  :rec.iconcls,
                                   'operation':rec.appcode
                                  }
                                );                     
                 });

我还没有测试过,但我很确定我就是这样做的(从我的头脑中)

编辑:添加范围变量

关于javascript - Extjs 4创建工具栏项目宽度ajax请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7746376/

相关文章:

javascript - 脚本不工作

javascript - 重写Ext.data.Store,调用构造函数

javascript - Extjs 6 : What's the best practice to handle repeated configuration

javascript - 在不执行页面重新加载的情况下重新初始化 Sencha Touch 应用程序

object - Ext.apply覆盖嵌套对象?

javascript - jqGrid FilterToolbar 具有最有效的日期范围选择器

javascript - JSON.解析: unexpected character in AngularJS and PHP

forms - 如何在 ExtJs 下使用商店提交表单?

javascript - 在 vim 中的 javascript 字符串中突出显示 HTML 语法

javascript - 如何为 ExtJS 对象创建动态变量名?