EmberJs - 如何为EmberJs创建一个插件

时间:2013-03-15 13:24:51

标签: ember.js

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

谢谢!,

2 个答案:

答案 0 :(得分:3)

Ember.js中有很多内容可以扩展功能,因为很多类可以扩展,这是构建自己的控制器,路由和模型的标准方法;现有的类和现有的实例都可以“重新打开”。 [最好具体询问一下你想要实现的目标,以获得一个更好的方法来解决这个问题。]

此外,如果您想要一个全新的类来定义控制器或路由需要访问的行为,那么有一种机制可以将新类的实例注入其中,而实例不是全局的变量。根据{{​​3}}的代码,您可以通过以下方式定义类:

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");

答案 1 :(得分:0)

在奥德尔添加“扩展”时,你没有什么特别的要求。您最想要做的事情是引入新的Controllers and Views。为了做到这一点,你只需要继承Ember的核心类。 Here是这种“扩展”的一个例子,它提供了可重用且提供大量价值的视图。

相关问题