这可能是一个广泛的问题,但我在看: 是否有一部分Ember API提供了一些创建扩展的工具? 任何显示出良好方法的现有插件?
谢谢!,
答案 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是这种“扩展”的一个例子,它提供了可重用且提供大量价值的视图。