2013-03-15 38 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");