javascript - 如何将 Store 注入(inject)我的 ember 组件

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

我现在的情况是需要将商店注入(inject)到我的组件中,至少我认为这是我的需要。

情况是这样的:

我有组件,代码本身并不重要,但我粘贴它是为了更好地理解:

//components/masonry-plugin.js
import Ember from 'ember';

export default Ember.Component.extend({
  didInsertElement : function(){
    this._super();
    Ember.run.scheduleOnce('afterRender', this, this.afterRenderEvent);
  },

  afterRenderEvent : function(){
    var $grid = this.$('.grid').masonry({
      itemSelector: '.grid-item',
      percentPosition: true,
      columnWidth: '.grid-sizer'
    });
    // layout Isotope after each image loads
    $grid.imagesLoaded().progress( function() {
      $grid.masonry();
    });  
  }
});

这是他自己的模板

<div class="grid">
    <div class="grid-sizer"></div>
    {{#each model}}
        <div class="grid-item">
          <img {{bind-attr src=imgLink}}>
        </div>
     {{/each}}
</div>

此模板由{{masonry-plugin}}导入到另一个模板photography.hbs

问题是,由于在photography.hbs中我可以访问模块imgLink,因为在路由photography.js中我创建了使用Flickr API的模块,我怎样才能使该模块可访问也到 {{masonry-plugin}} 中的模板?

希望解释清楚

这里还有用于澄清的模型 img

var img = DS.Model.extend({
    imgLink: DS.attr('string')
});

最佳答案

组件中只需要一行 inject那里的商店或其他服务:

import Ember from 'ember';
const { service } = Ember.inject;

export default Ember.Component.extend({
    store: service(),
    foo: service('store') // if you dont want to name property same as service
});

关于javascript - 如何将 Store 注入(inject)我的 ember 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35045398/

相关文章:

javascript - 一行的列总数

javascript - 如何从 react-semantic-ui 中的多个搜索选择下拉框中获取值?

javascript - Angular 、下划线、拔除数组、排序

ember.js - Ember 创建对象时如何观察火(观察已在模型中设置)

ember.js - Ember.Select 能否呈现内容 promise

javascript - 我如何使用 Service Worker 向我的所有 API 请求添加 Authorization header ,这是否有意义?

javascript - Emberjs - 在 {{#each}} 循环内访问父级

ember.js - 这是 @cached 自动跟踪 Ember Octane 的有效用法吗?

javascript - Ember 数据不允许 hasMany 关系中的重复条目

unit-testing - Ember CLI : How to do Asynchronous Model Unit Testing with RESTAdapter