2013-03-15 39 views

回答

0

没有什么特别的,你需要在奥德为“扩展”添加到灰烬。您最想做的事情是引入新的Controllers and Views。为了做到这一点,你只需要继承Ember的核心类。 Here就是这样一个“扩展”的例子,它提供了可重复使用并提供很多价值的视图。

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