2015-11-26 6 views
0

У меня есть пользовательский файл языка:ExtJS - Синхронная загрузка пользовательского языка?

Ext.define('DemoApp.util.Resource' { 
    singleton: true, 

    text: 'English' 
}); 
var R = DemoApp.util.Resource; 

Теперь у меня есть еще один файл пользовательского языка:

Ext.define('DemoApp.util.fr.Resource' { 
    override: 'DemoApp.util.Resource', 

    text: 'French' 
}); 

В application.js:

init: function() { 
    var url; 

    url = Ext.util.Format.format("locale/util/fr/Resource.js"); 

    Ext.Loader.loadScript({ 
     url: url, 
     scope: this 
    }); 
}, 

В целях я использую:

items: [{ 
    xtype: 'button', 
    text: R.text 
}] 

Он загружает «английский», но если я поместил R.text в Ext.Msg.show, он загрузит «французский».

Возможно, он загружает файл js после просмотра рендеринга. Как я могу загрузить его перед представлением рендеринга? Я попробовал Ext.apply, он тоже не работает.

Большое спасибо!

ответ

0

Я не знаю точно, что ваш код, но в Fiddle это показывает первое «английский язык», затем «французский»:

Ext.define('DemoApp.util.Resource', { 
    //singleton: true, // makes an error in fiddle 
    text: 'English' 
}); 

Ext.application({ 
    name : 'Fiddle', 

    launch : function() { 
     var R = Ext.create('DemoApp.util.Resource'); 

     alert(R.text); 

     Ext.define('DemoApp.util.fr.Resource', { 
      override: 'DemoApp.util.Resource', 
      text: 'French' 
     }); 

     alert(R.text); 
    } 
}); 

Примечания: обратите внимание на ком в функции Ext.define.