Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs 通过无键JSON读取列表视图_Extjs_Sencha Touch 2_Sencha Architect - Fatal编程技术网

Extjs 通过无键JSON读取列表视图

Extjs 通过无键JSON读取列表视图,extjs,sencha-touch-2,sencha-architect,Extjs,Sencha Touch 2,Sencha Architect,我使用Sencha Architect进行测试。 我添加了一个列表视图,与商店连接,与模型连接。 存储配置为加载以下JSON数据: { "data": { "blacklist":[ "word 1", "word 2", "word 2" ] } } { "data": { "blacklist":[ {"name": "wo

我使用Sencha Architect进行测试。 我添加了一个列表视图,与商店连接,与模型连接。 存储配置为加载以下JSON数据:

{
    "data": {
        "blacklist":[
            "word 1",
            "word 2",
            "word 2"
        ]
    }
}
{
    "data": {
        "blacklist":[
            {"name": "word 1"},
            {"name": "word 2"},
            {"name": "word 3"}
        ]
    }
}
每个“单词x”都应该在我的列表视图中作为列表项列出

现在我想建立我的模型。但是一个模型确实需要“字段名”,在我的例子中,它并不存在

如果我使用的是以下JSON数据:

{
    "data": {
        "blacklist":[
            "word 1",
            "word 2",
            "word 2"
        ]
    }
}
{
    "data": {
        "blacklist":[
            {"name": "word 1"},
            {"name": "word 2"},
            {"name": "word 3"}
        ]
    }
}
给我的模型一个名为“name”的字段,一切正常


但是,如果我的JSON值在模型中没有要定义的键(作为字段/字段名),我该如何设置这个场景呢?

如果不知道您想要对结果做什么,您就无法修改此代码以获得所需的内容

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";
            }
        }]
    }
});
如果我在问题中遗漏了什么,请告诉我


祝你好运,布拉德。谢谢你的回答。但我也有问题。我将“config”属性添加到模型的字段中。如果我输出“returnArr”,它会正确地输出为[“单词1”,“单词2”]。但是我的列表只显示一个列表项,如:“word 1,word 2”我是否遗漏了什么?我想我看到了要点:“convert”函数只遍历每个项。在这个阶段,这个项目可以修改,但这不是我要实现的。我将要实现的是,通过列表将项目识别为单个项目(在本例中为3个项目)。但是列表将所有项目视为1您对api有多大的控制权?你能调整任何结果吗?我认为不修改json结果就可以满足您的要求,但这会很麻烦。不幸的是,没有办法“自动”修改api的输出。我想我将手动转换数据,并“静态”地为其提供服务。非常感谢,现在我知道,这个例子不可能(不可能)解决:)我认为您需要的是能够为“word*”值添加一个键,这不可能吗?