我正在将 Ember.js 添加到现有的 Rails 应用程序中,并rootElement
在创建我的Ember.Application
.
在这之外还有几个地方rootElement
我想插入一个绑定到简单Ember.Object
模型的小 ember 模板。
我创建了一个带有示例的 jsfiddle,我希望它可以使我正在寻找的内容变得清晰:http: //jsfiddle.net/amiel/x9fCz/2/
做这个的最好方式是什么?
我正在将 Ember.js 添加到现有的 Rails 应用程序中,并rootElement
在创建我的Ember.Application
.
在这之外还有几个地方rootElement
我想插入一个绑定到简单Ember.Object
模型的小 ember 模板。
我创建了一个带有示例的 jsfiddle,我希望它可以使我正在寻找的内容变得清晰:http: //jsfiddle.net/amiel/x9fCz/2/
做这个的最好方式是什么?
我创建了一个新的 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;博士:
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');
}
});
要阻止该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。