0

我正在尝试为我的 sencha Ext JS 应用程序实现 i18n。我使用了来自 [https://github.com/elmasse/Ext.i18n.Bundle-touch/blob/master/i18n/Bundle.js][1] 的 impl,但使用了更简化的版本。

基本上,我有一个商店 [webUi.util.rb.ResourceBundle] 链接到模型 [webUi.util.rb.model.KeyValPair],试图将 json 数据加载到商店。加载数据后,我将尝试通过不同的存储功能访问加载的数据。但是没有得到它..?谁能找到我错过的东西..?

店铺类

Ext.define('webUi.util.rb.ResourceBundle', {
        extend: 'Ext.data.Store',
        requires: [
                   'webUi.util.rb.model.KeyValPair'
        ],
        constructor: function(config){
            config = config || {};
            var me = this;
            Ext.applyIf(config, {
                    autoLoad: true,
                    model: 'webUi.util.rb.model.KeyValPair',
                    proxy:{
                            type: 'ajax',
                            url: webUi.util.AppSingleton.uiRsrcUrl,
                            noCache: true,
                            reader: {
                                    type: 'json',
                                    rootProperty: 'bundle'
                            },
                            getParams: Ext.emptyFn
                    },
                    listeners:{
                            'load': this.onBundleLoad,
                            scope: this
                    }
            });

            me.callParent([config]);
            me.getProxy().on('exception', this.onBundleLoadException, this, {single: true});
        },

        onBundleLoad: function(store, record, success, op) {
            if(success){
                this.fireEvent('loaded');
            } else{
                this.fireEvent('loadError');
            }
        },
        onBundleLoadException: function(){
            console.dir(arguments);
        },
        onReady: function(fn){
            this.readyFn = fn;
            this.on('loaded', this.readyFn, this);
        },
        getMsg: function(key){
            return this.getById(key)? Ext.util.Format.htmlDecode(this.getById(key).get('val')) : key + '.undefined';
        }
});

模型类

Ext.define('webUi.util.rb.model.KeyValPair', {
        extend: 'Ext.data.Model',
        config: {
                idProperty: 'key',
                fields: ['key', 'val']
        }

});

JSON 响应

{"bundle":[{"key":"one","val":"Oneee"},{"key":"two","val":"Twooo"}]}

我的代码

var bundle = Ext.create('webUi.util.rb.ResourceBundle');
bundle.onReady(function(){
    console.log('%%%%%%%%%%%%%');
    console.log(bundle.getMsg('one'));
    console.log(bundle.getById('one'));
    console.log(bundle.getAt(0));
});

控制台日志

%%%%%%%%%%%%% 
one.undefined 
null 
constructor {raw: Object, modified: Object, data: Object, hasListeners: HasListeners, events: Object…}
4

1 回答 1

0

尝试使用 bundle.data.getMsg()

于 2013-10-28T05:55:50.043 回答