2

目前正在使用 ember-cli 构建 Ember.js 应用程序。

reopenClass模型中,我需要使用 Ember 数据“存储”:

Business.reopenClass({

  search: function(params) {
    # nope, there is no "store" on the class/static object
    var store = this.store;
  }

});

我知道我可以使用全局变量,但是全局变量太脏了:

Business.reopenClass({

  search: function(params) {
    # this works, but the `window` global & `__container__` accessor are verbotten
    var store = window.App.__container__.lookup("store:main");
  }

});

如何在类/静态函数中使用lookup或使用?lookupFactory

4

1 回答 1

1

找到了解决方案;遵循 Ember 的护栏:

我的 Business#search 方法使用 RESTAdapter#ajax 执行自定义 AJAX。适当地移出到可以使用 Container#lookup 的适配器。

var BusinessAdapter = ApplicationAdapter.extend({

  search: function(params) {
    // first class access to the container
    var store = this.container.lookup("store:main");
    // ...
    var promise = this.ajax(url, "GET", { data: params }).then(function(adapterPayload) {
      // ...
    });
    return promise;
  }

});
于 2014-06-11T05:29:49.063 回答