我正在将Ember.js添加到现有的rails应用程序中,并在创建rootElement
时使用Ember.Application
选项。
在rootElement
之外的地方有几个地方,我想插入绑定到简单Ember.Object
模型的小型ember模板。
我已经创建了一个jsfiddle,其中包含一个示例,我希望能够将我正在寻找的内容清楚地表达出来:http://jsfiddle.net/amiel/x9fCz/2/
这样做的最佳方式是什么?
答案 0 :(得分:1)
我创建了一个new ember view,其模板名称与我的把手模板相匹配。然后在ember初始化器中实例化它。
Ember.Application.initializer({
name: "clock_view",
initialize: function(container, application) {
var view = App.ClockView.create();
view.replaceIn('#now');
}
});
请参阅jsfiddle的完整示例:http://jsfiddle.net/amiel/2FsxA/1/
我还没有接受我自己的答案,看看是否有其他人有更好的方法来做这件事。
更新:这是另一种可能的解决方案:http://jsfiddle.net/amiel/2FsxA/3/
TL; DR:
App.ApplicationRoute = Ember.Route.extend({
setupController: function(controller, model) {
this.setupClock();
this._super(controller, model);
},
setupClock: function() {
var view = App.ClockView.create();
view.replaceIn('#now');
}
});
答案 1 :(得分:1)
要阻止DEPRECATION: Using the defaultContainer is no longer supported
消息,您必须在ApplicationView#didInsertElement中创建一个childView。
App.ApplicationView = Ember.View.extend({
didInsertElement: function() {
var view = this.createChildView(App.ClockView);
view.replaceIn('#now');
}
});
App.ClockView#controller现在也是App.ApplicationController。