商店中未加载Ember数据动态模型

时间:2015-11-26 10:21:13

标签: javascript ember.js ember-data ember-cli

我的应用中有一个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组件中访问它们?

谢谢!

1 个答案:

答案 0 :(得分:0)

路线中的模型钩子通常会设置你的模型,但如果你从控制器加载记录,你需要自己做。

this.set('model', this.store.peekAll('search'));