使用Ember.js呈现模型位于rootElement之外的模板
我正在将Ember.js添加到现有的rails应用程序中,并在创建使用Ember.js呈现模型位于rootElement之外的模板,ember.js,Ember.js,我正在将Ember.js添加到现有的rails应用程序中,并在创建Ember.application时使用rootElement选项 在这个rootElement之外有几个地方,我想插入一个绑定到简单ember.Object模型的小余烬模板 我已经创建了一个JSFIDLE,其中有一个示例,我希望能够清楚地说明我要寻找的内容: 最好的方法是什么?我创建了一个模板,模板名称与我的把手模板匹配。然后在一个余烬初始化器中实例化它 Ember.Application.initializer({ nam
Ember.application
时使用rootElement
选项
在这个rootElement
之外有几个地方,我想插入一个绑定到简单ember.Object
模型的小余烬模板
我已经创建了一个JSFIDLE,其中有一个示例,我希望能够清楚地说明我要寻找的内容:
最好的方法是什么?我创建了一个模板,模板名称与我的把手模板匹配。然后在一个余烬初始化器中实例化它
Ember.Application.initializer({
name: "clock_view",
initialize: function(container, application) {
var view = App.ClockView.create();
view.replaceIn('#now');
}
});
请参阅JSFIDLE上的完整示例:
我不会接受我自己的答案,只是看看是否有其他人有更好的方法来做到这一点
更新:下面是另一种可能的解决方案:
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');
}
});
要防止
弃用:不再支持使用defaultContainer
消息,您必须在ApplicationView#didInsertElement中创建一个子视图
App.ApplicationView = Ember.View.extend({
didInsertElement: function() {
var view = this.createChildView(App.ClockView);
view.replaceIn('#now');
}
});
App.ClockView#控制器现在也将成为App.ApplicationController。这似乎是一个相当好的解决方案!非常干净。唯一的缺点是,用于放置视图的代码不在您的“正常”位置,其他开发人员将在该位置搜索它。@JordyLangen谢谢!是的,我同意。这似乎只比在
Ember.Application.create({ready:…
)中使用与视图相关的代码稍微好一点。可能在ApplicationRouter
或ApplicationController
中有一个钩子会更好?弃用:不再支持使用defaultContainer。[defaultContainer\lookup].您应该检查此项,以便在上次余烬中顺利完成此项工作