我是sencha touch的新手,我正在尝试解析一组数据(这似乎不是一个不常见的用例,但我在网上找不到任何关于它的信息)。我在嵌套的json上跟踪了sencha ext.data.reader.json doc,但它不起作用。这是我的模特: 搜索结果(以保存多个搜索结果):
Ext.define('GS.model.SearchResults', {
extend: 'Ext.data.Model',
autoLoad: true,
config: {
fields: [
{name: 'query', type: 'string'},
],
hasMany : {model: 'SearchResult', name: 'results'},
}
});
搜索结果,以保存单个搜索结果
Ext.define('GS.model.SearchResult', {
extend: 'Ext.data.Model',
config: {
fields: [
{name: 'id', type: 'int'},
{name: 'name', type: 'string'}
],
belongsTo: 'SearchResults'
}
});
然后在我的控制器中,我有这段代码:
var store = Ext.create('Ext.data.Store', {
autoLoad: "true",
model: "GS.model.SearchResults",
proxy:
{
type: 'ajax',
url : 'www.someurl.com/?query=somequery',
reader: {
type: 'json'
}
}
});
store.load({
callback: function() {
console.log("Done Loading");
var root = store.first();
console.log("Results for " + root.get('query')); //this prints correctly
console.log(root.results());//THIS IS THE LINE IM INTERESTED IN
console.log(root.raw.results);//this weirdly works
//now I want to print each search results name
root.results().each(function(result) {
console.log("Song: " + result.get('name'));
});
}
});
}
当我记录root.results()时,我得到了
未捕获TypeError:对象[object Object]没有方法'results'
这正是他们在文档中的表现,所以有人知道为什么这不起作用吗?
修改:这是我的文档following
答案 0 :(得分:0)
检查错误的最佳方法是在chrome控制台中进行调试。回调后,您将在root.raw或root.data中找到您的记录。
我用来在chrome控制台中调试并编写所需的代码。
答案 1 :(得分:0)
经过一番痛苦的试验和错误之后,我想通了。在教程中,他们使用了非常规的模型名称,但在我的情况下,我需要使用完全合格的模型名称
所以要解决我需要改变
hasMany : {model: 'SearchResult', name: 'results'},
到
hasMany : {model: 'GS.model.SearchResult', name: 'results'},
和我这样的深层模型相同:
belongsTo: 'GS.model.SearchResults'
要抓住错误的错误,但我希望这可以帮助其他人担任我的职位