2012-05-04 68 views
0

嗨,我使用分机4.ExtJs:从商店初始化变量

我有一个全局变量,需要从商店初始化。

var cp=0; 

Ext.onReady(function(){ 
Ext.define('Init', { 
      singleton: true, 
      cp: 0 
     }); 

Ext.define('loggedUserList', { 
       extend: 'Ext.data.Model', 
       fields: ['id','name'] 
      }); 

      loggedUser = Ext.create('Ext.data.Store', { 
       model: 'loggedUserList', 
       autoLoad: true, 
       proxy: { 
        type: 'ajax', 
        url : url+'/lochweb/loch/users/getLoggedUser', 
        reader: { 
        type: 'json', 
         root: 'provider' 
        }     
       }, 
       listeners: { 
        load:function(loggedUser){ 
         Init.cp = loggedUser.getAt(0).data.id; 

        } 
       } 

      }); 
}); 

我正在使用另一个URL CP值如下,

Ext.define('vocbList', { 
       extend: 'Ext.data.Model', 
       fields: [ 
        { name: 'id', mapping: 'id' }, 
        { name: 'code', mapping: 'code' }, 
        { name: 'loinc', mapping: 'loinc.loincNumber' } 
       ] 
      });  

      var vocabulary = Ext.create('Ext.data.Store', {    
       model: 'vocbList', 
       autoLoad: true, 
       proxy: { 
        type: 'ajax',     
        url : url+'/lochweb/loch/vocabulary/getVocabularyByProvider?providerId='+Init.cp,     
        reader: { 
         type: 'json', 
         root: 'Vocabulary' 
        } 
       } 
      }); 

但其价值仍然0.How转让其价值的形式存储,以便它可以为其他目的而重新使用。

感谢

+0

你是指另一个网址是什么意思?在Ext范围之外还是在内部? – Natasha

+0

需要使用另一个商店中的url中的cp的值,如url:url +'/ lochweb/loch/vocabulary/getVocabularyByProvider?providerId ='+ cp, – user1321824

+0

编辑了问题 – user1321824

回答

1

在你Ext.onReady,定义一个全局类是这样的:

Ext.define('Init', { 
    singleton: true, 

    cp: 0 
}); 

然后你就可以获取或设置CP任何你想要的:

Init.cp = 'some'; 
var myCp = Init.cp; 
+0

(编辑过的帖子)但仍未赋值 – user1321824

+0

在“另一个网址”(您的第二个代码)中,您仍然使用'+ cp'而不是'+ Init.cp' - 检查了这一点。 – Natasha

+0

嗨娜塔莎,是的,我已经尝试作为url:url +'/ lochweb/loch/vocabulary/getVocabularyByProvider?providerId ='+ Init.cp但cp的值仍然是0.任何帮助 – user1321824

3

你需要什么是一个回调。

存储调用异步完成,以便在商店从数据库获取数据时浏览器不会冻结。

me.vocabulary.load({ 
    scope: this, 
    callback: function (records, operation, success) { 
     //here the store has been loaded so records are not empty 
    } 

});