Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
dojojavascript变量作用域_Javascript_Json_Dojo_Scope_Dgrid - Fatal编程技术网

dojojavascript变量作用域

dojojavascript变量作用域,javascript,json,dojo,scope,dgrid,Javascript,Json,Dojo,Scope,Dgrid,我正在使用并尝试在外部设置数据存储。当页面加载时,我调用aliasTicket.load()来创建网格。网格加载数据源时为空。执行查询时,setAliasSource(aliasData)已设置 没有错误,但网格仍然为空。aliasStore正在使用数据更新,但即使在刷新网格后,它也不会反映在网格上。如何在查询后获得网格中反映的数据 Javascript对象 var aliasTicket = (function (){ var aliasData = []; requ

我正在使用并尝试在外部设置数据存储。当页面加载时,我调用
aliasTicket.load()
来创建网格。网格加载
数据源时
为空。执行查询时,
setAliasSource(aliasData)已设置

没有错误,但网格仍然为空。aliasStore正在使用数据更新,但即使在刷新网格后,它也不会反映在网格上。如何在查询后获得网格中反映的数据

Javascript对象

   var aliasTicket = (function (){

    var aliasData = [];

    require([ "dojo/store/Observable", "dojo/store/Memory"]);   
    var aliasStore = new dojo.store.Observable(new dojo.store.Memory({
        data: aliasData,
        idProperty: "id"
      }));  

    return{         

        load:function(){

            require([
                     ........

                   ], function(declare, Memory, OnDemandGrid, ColumnSet, Selection,
                     selector, Keyboard, DijitRegistry, editor, ColumnHider,
                     registry, Observable,lang) {

                aliasData = this.aliasData;

                var Store = this.aliasStore = new dojo.store.Observable(new dojo.store.Memory({
                    data: aliasData,
                    idProperty: "id"
                  }));

                console.log(Store);

                var CustomAliasNameGrid = declare([OnDemandGrid, selector, Selection, Keyboard, editor, DijitRegistry, ColumnHider]);

                  var aliasNameGrid = new CustomAliasNameGrid({
                    store: Store,
                    columns: {
                      id: {
                        label: "Id",
                        field: "id",
                        hidden: true,
                        autoSizeColumn: true
                      },

                      employeeTicketId: {
                        label: "Employee Ticket Id",
                        field: "employeeTicketId",
                        hidden: true,
                        autoSizeColumn: true
                      },

                      chkBox: selector({}),


                      aliasName: {
                        label: "Alias Names",
                        field: "aliasTicketName",
                        autoSizeColumn: true,
                        formatter: function(str) {
                          return str.replace(/\w\S*/g, function(txt) {
                            return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
                          });
                        }
                      }

                    },
                    selectionMode: "none",
                    loadingMessage: "Loading data...",
                    noDataMessage: "No results found....",
                    allowSelectAll: true
                  }, "aliasNameGrid");  



                aliasNameGrid.refresh()

            }); 

        },

        setAliasSource: function (data){
            console.log(data);
            this.aliasSource = data;            

        },

        setAliasData: function (data){
            this.aliasData = data;              
        },

        getAliasSource: function (){

            return this.aliasSource;
        }       

    };  

})();
设置数据存储数据

aliasData = [{.....},
             {.....},
             {......];          


            require(["dijit/dijit"]);
            aliasTicket.setAliasSource(aliasData);              
            dijit.byId('aliasNameGrid').refresh();

您正在将“this.Store”设置为对象数组,而不是真正的“dojo Store”对象。按照您的代码,我看不到您实际在哪里使用“this.Store”。在网格代码中,我确实看到了一个名为“Store”的局部变量

因此,我不确定我是否遵循了您的代码示例,但是,您应该“设置”网格存储,然后刷新它。像这样的

 setAliasSource: function (data){
        console.log(data);
        this.Store = data;
        dijit.byId('aliasNameGrid').set("store",new dojo.store.Observable(new dojo.store.Memory({ data: data,idProperty: "id"}));
        dijit.byId('aliasNameGrid').refresh();

    },

我在加载函数var store=this.aliasStore=new dojo.store.Observable(new dojo.store.Memory({data:aliasData,idProperty:“id”}))中声明了store;我认为,由于load已首先运行,因此需要再次运行以反映数据,但再次运行load可能不是一个好主意,因为小部件已注册。在调用set('store',…)之后,不必调用refresh,因为set('store',…)-这将为您刷新。