我的应用中有一个search
模型,当用户在搜索框中输入内容时会动态加载。在this.store.query('search', {query: "xyz"})
上调用keyUp()
并从API后端获取数据。但是,看起来我在这里遗漏了一些东西,因为在Ember Inspector中我没有看到要为search
模型加载的数据。无论如何,这不是我最关心的问题,因为我不知道ember检查器是动态地还是仅在刷新时从商店加载数据。我的问题是我无法访问模板中从服务器返回的数据。
我不得不提一下,我没有搜索结果的路径,这更像是类似IMDb的搜索框,其中结果作为搜索框加载了一种自动完成即时结果。
我的代码:
/templates/components/search-box.hbs
{{input value=query}}
<div>
// search results should be displayed here
</div>
/templates/components/app-bar.hbs
<nav>
{{#link-to 'index' tagName='button'}}Home{{/link-to}}
{{search-box value=query action="search"}}
</nav>
/templates/application.hbs
{{app-bar action="search"}}
{{outlet}}
/components/search-box.js
import Ember from 'ember';
export default Ember.TextField.extend({
keyUp: function(e){
if (this.get('value'))
this.sendAction('action', this.get('value'));
}
});
/components/app-bar.js
import Ember from 'ember';
export default Ember.Component.extend({
actions: {
search: function(query){
this.sendAction('action', query);
}
}
});
/controllers/application.js
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
search: function(query){
this.store.query('search', {text: query});
}
}
});
不应this.store.query('search', {text: query});
自动将记录推送到商店吗?如果是,我如何在/templates/components/search-box.hbs
组件中访问它们?
谢谢!
答案 0 :(得分:0)
路线中的模型钩子通常会设置你的模型,但如果你从控制器加载记录,你需要自己做。
this.set('model', this.store.peekAll('search'));