0

这可能是一个广泛的问题,但我正在研究:Ember API 是否有一部分提供了一些创建扩展的工具?任何现有的插件都显示了一个很好的方法?

谢谢!,

4

2 回答 2

3

Ember.js 内置了很多功能来扩展功能,因为很多类都可以扩展,这是构建自己的控制器、路由和模型的标准方式;和现有的类,以及现有的实例都可以“重新打开”。[最好具体询问您想要实现的目标,以获得更具体的答案,以更好地实现它。]

此外,如果您想拥有一个全新的类来定义您的控制器或路由需要访问的行为,那么您可以使用一种机制将新类的实例注入其中,而无需将该实例作为全局变量。根据http://livsey.org/blog/2013/02/10/integrating-pusher-with-ember/中的代码,您可以通过以下方式定义类:

Ember.MyNewPlugin = Ember.Object.extend({
  init: function() {
    // Anything you need to do to initialise the object
  },
  myFunc: function(param) {
    // Anything you need to do with with "param"
  }
});

然后通过以下方式将实例注入控制器和路由:

Ember.Application.initializer({
  name: "mynewplugin",
  initialize: function(container, application) {
    // use the same instance everywhere in the app
    container.optionsForType('mynewplugin', { singleton: true });

    // register 'mynewplugin:main' as our MyNewPlugin object
    container.register('mynewplugin', 'main', Ember.MyNewPlugin);

    // inject the MyNewPlugin object into all controllers and routes
    container.typeInjection('controller', 'mynewplugin', 'mynewplugin:main');
    container.typeInjection('route', 'mynewplugin', 'mynewplugin:main');
  }
});

然后在控制器和路由中,您可以通过

var myNewPlugin = this.get('mynewplugin');

并通过以下方式调用其功能:

myNewPlugin("Some data");
于 2013-03-16T08:42:10.120 回答
0

为 Ember 添加“扩展”没有什么特别需要的。您最有可能要做的就是引入新的Controllers and Views. 为此,您只需对 Ember 的核心类进行子类化。是这样一个“扩展”的示例,它提供了可重用并提供大量价值的视图。

于 2013-03-15T14:01:49.750 回答