0

我正在使用 DS.RestAdapter,修订版 12 来查询服务器以获取结果,但如果我不止一次查询,我很难在页面上显示结果。

我有一个带有与以下操作相关的搜索按钮的应用程序:

search: function() {
  this.set('searchResults', App.Property.find());
}

然后在我的车把模板中,我有显示结果的代码,类似于:

{{#if searchResults.isLoaded}}
  {{searchResults.length}}
{{/if}}

使用此配置,每次单击搜索按钮时,都会发出一个 JSON 请求,所有属性都会被检索并显示在屏幕上。searchResults 对象的类型为:DS.RecordArray,并且对该对象的引用似乎保持不变。即.. 如果我在模板上显示 {[searchResults}},我得到并且 ID 保持不变。

但是,一旦我将代码更改为基于参数进行查询,例如:

search: function() {
  this.set('searchResults', App.Property.find({hello: 'world}));
}

然后,每次我单击搜索按钮时,都会使用正确的搜索参数对服务器进行查询,并且第一次这样做时,搜索结果会正确显示在页面上.....但是....当我再次单击搜索时,结果消失了。此外,searchResults 对象现在的类型为:DS.AdapterPopulatedRecordArray,如果我在屏幕上显示它,我可以看到每次单击搜索时 {{searchResults}} 都会获得一个新实例,但是 isLoaded 属性始终为 false,并且所以我的结果不显示。

我究竟做错了什么?谢谢你的帮助。

4

1 回答 1

0

如果有人遇到这样的事情,那么问题就是因为我覆盖了我正在加载的对象上的 didLoad 函数。在 didLoad 函数中,我正在检查关联是否为空,如果是,我正在浏览器本地创建分配的新实例。

这似乎与我正在加载的整个对象数组的“已加载”状态相混淆。

于 2013-05-26T06:59:43.007 回答