0

sencha Ext JS App の i18n を達成しようとしています。[https://github.com/elmasse/Ext.i18n.Bundle-touch/blob/master/i18n/Bundle.js][1] の impl を使用しましたが、より単純化されたバージョンです。

基本的に、モデル [webUi.util.rb.model.KeyValPair] にリンクされたストア [webUi.util.rb.ResourceBundle] があり、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));
});

console.log

%%%%%%%%%%%%% 
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 に答える