2

テスト目的で Sencha Architect を使用しています。ストアに接続され、モデルに接続されたリスト ビューを追加しました。ストアは、次の JSON データをロードするように構成されています。

{
    "data": {
        "blacklist":[
            "word 1",
            "word 2",
            "word 2"
        ]
    }
}

すべての「単語 x」は、リスト ビューのリスト アイテムとしてリストする必要があります。

今、私は自分のモデルをセットアップしたいと思っていました。しかし、モデルには「フィールド名」が必要ですが、私の場合は存在しません。

次の JSON データを使用している場合:

{
    "data": {
        "blacklist":[
            {"name": "word 1"},
            {"name": "word 2"},
            {"name": "word 3"}
        ]
    }
}

モデルに「name」という名前のフィールドを指定すると、すべて正常に機能します。

しかし、JSON 値にモデルで (フィールド/フィールド名として) 定義するキーがない場合、このシナリオをどのように設定すればよいでしょうか?

4

1 に答える 1

1

結果で何をしたいのかを正確に知らなくても、探しているものを得るためにこのコードを変更することはできません。

App.js

Ext.Loader.setConfig({
    enabled : true
});


Ext.application({
    name : ('SF' || 'SenchaFiddle'),

    models : ['TestModel'],

    stores : ['TestData'],

    launch : function() {
        Ext.create('Ext.dataview.List', {
            fullscreen : true,

            model : 'TestModel',

            store : 'TestData',

            itemTpl : "{blacklist}"
        });
    }
});

モデル:

Ext.define('SF.model.TestModel', {
    extend : 'Ext.data.Model',

    config : {
        fields : [{
            name : 'blacklist',
            type : 'string',

            // **This is where you will parse out the values of 'blacklist'**

            convert : function(value, record) {
                console.log("value: ", value.length);
                console.log("Record: ", record);

                var returnArr = [];
                if (value && value.length > 0) {
                    for (var i=0; i<value.length; i++) {
                        returnArr[i] = value[i];
                    }

                    return returnArr;
                };

                return "Could not Convert";
            }
        }]
    }
});

店:

Ext.define('SF.store.TestData', {
    extend : 'Ext.data.Store',

    config : {
        model : 'SF.model.TestModel',

        data : [{
            "blacklist":[
                "word 1",
                "word 2",
                "word 2"
            ]
        }],
    }
});

質問で何かを見逃した場合はお知らせください。

がんばれ、ブラッド

于 2013-07-19T14:03:10.677 に答える