Extjs 通过无键JSON读取列表视图
我使用Sencha Architect进行测试。 我添加了一个列表视图,与商店连接,与模型连接。 存储配置为加载以下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
{
"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*”值添加一个键,这不可能吗?