我正在使用DS.RestAdapter修订版12来查询服务器的结果,但如果我多次查询,我很难在页面上显示结果。
我的应用程序的搜索按钮与以下操作相关联:
search: function() {
this.set('searchResults', App.Property.find());
}
然后在我的车把模板中,我有显示结果的代码,类似于:
{{#if searchResults.isLoaded}}
{{searchResults.length}}
{{/if}}
使用此配置,每次单击搜索按钮时,都会发出JSON请求,所有属性都将被检索并显示在屏幕上。 searchResults对象的类型为:DS.RecordArray,对象的引用似乎保持不变。 ie ..如果我在模板上显示{[searchResults}},我会得到并且ID保持不变。
但是,只要我将代码更改为基于参数进行查询,例如:
search: function() {
this.set('searchResults', App.Property.find({hello: 'world}));
}
然后,每次单击搜索按钮时,都会使用正确的搜索参数对服务器进行查询,第一次执行此操作时,搜索结果会在页面上正确显示.....但.. ..一旦我再次点击搜索,结果就会消失。此外,searchResults对象现在是类型:DS.AdapterPopulatedRecordArray,如果我在屏幕上显示它,我可以看到{{searchResults}}每次单击搜索时都会获得一个新实例,但isLoaded属性始终为false,并且所以我的结果不显示。
我做错了什么?谢谢你的帮助。
答案 0 :(得分:0)
如果有人经历过这样的事情,那么问题就出现了,因为我已经覆盖了我正在加载的对象上的didLoad函数。在didLoad函数中,我正在检查一个关联是否为空,如果是,我在浏览器本地创建了一个新的分配实例。
这似乎弄乱了我正在加载的整个对象数组的'isLoaded'状态。