如何在ember.js的组件中获取商店

大卫

我到底如何在组件内部的商店中获得控制权?我正在尝试创建一个自动完成的组件,该组件从商店返回结果。

App.AutoCompleteComponent = Ember.Component.extend({

    //-------------------------------------------
    // Ember Properites
    //-------------------------------------------
    content: Ember.ArrayController.create(),

    //-------------------------------------------
    // Instance Properties
    //-------------------------------------------
    queryText: "",

    componentItemSelected: null,

    //-------------------------------------------
    // Observers
    //-------------------------------------------
    queryTextChanged: function () {
        this.updateContent(this.get("queryText"));
    }.observes("queryText"),

    //-------------------------------------------
    // Instance Methods
    //-------------------------------------------
    selectItem: function (item) {
        this.set("componentItemSelected", item);
    },

    updateContent: function (queryText) {

        if (queryText.length <= 5) {

            console.log('not greater than 5 chars');
            return;
        }

        this.get("content").setObjects([]);

        var items = App.Company.find();

        this.get("content").setObjects(items);
    }
});

这是我的公司模式

App.Company = DS.Model.extend({

  name: DS.attr('string'),

  created_at: DS.attr('date'),

  updated_at: DS.attr('date'),

  people: DS.hasMany('person')

});

我试过了:

  • this.get('store')
  • DS.Store.find('company')
  • 只是 store
  • App.Company.find()

我总是得到一个 Uncaught TypeError ... has no method 'find'

劲派2k

真正的答案是你不应该。组件应该与外界无关,而对商店的依赖打破了这个概念。确实,您应该事先获取模型(在路由或控制器中,具体取决于逻辑)并将其传递到组件中。

https://github.com/emberjs/data/blob/master/TRANSITION.md

通常,直接在组件中查找模型是一种反模式,您应该更喜欢在包含组件的模板中传入所需的任何模型。

现在,我已经说了,将商店传递到组件中。它位于路由和控制器上,因此当您创建一个作为参数之一在商店中发送的组件时,您可以使用this.get('store')

{{auto-complete store=controller.store}}

要么

{{auto-complete store=store}}

http://emberjs.jsbin.com/OxIDiVU/720/edit

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在 Ember 3.8 中调用嵌套的 ember 组件

来自分类Dev

如何在Ember中获取模型的ID?

来自分类Dev

如何使React.js组件侦听Reflux中的商店

来自分类Dev

如何在Ember JS中获取currentRouteName的动态部分

来自分类Dev

如何在 Ember JS 中获取 REST Api?

来自分类Dev

如何在ember js中添加类

来自分类Dev

Ember JS:如何在调用时重用 ember 数据?

来自分类Dev

Ember.js如何在组件中正确过滤模型

来自分类Dev

如何在Promise成功或错误回调中获取Ember组件对象?

来自分类Dev

如何在模型中设置基于Ember组件的数据的tagName?

来自分类Dev

如何在Ember CLI中设置rootURL

来自分类Dev

如何在Ember中更改查询参数?

来自分类Dev

如何在Ember中显示HasMany关系

来自分类Dev

如何在ember中反转模型的输出?

来自分类Dev

如何在ember中创建枚举服务

来自分类Dev

如何在Ember中显示HasMany关系

来自分类Dev

如何在ember中反转模型的输出?

来自分类Dev

如何在Ember中更新嵌套对象

来自分类Dev

如何在Vue.js中获取组件元素的offsetHeight?

来自分类Dev

如何在react js的可重用组件中获取ref

来自分类Dev

如何在Ember中获取子路线的routeparameter

来自分类Dev

Ember-如何在路线动作中获取路线模型

来自分类Dev

如何在Ember中获取子路线的routeparameter

来自分类Dev

如何在Ember-cli中获取currentPath

来自分类Dev

如何在ember.js中包含特定的js文件

来自分类Dev

如何在Ember.js中重复资源

来自分类Dev

如何在ember.js中执行单元测试?

来自分类Dev

如何在Ember.js中对模型进行排序?

来自分类Dev

如何在Ember.js模板中显示hasMany记录?