使用Ember.js在rootElement外部使用模型渲染模板

时间:2013-09-12 23:56:25

标签: ember.js

我正在将Ember.js添加到现有的rails应用程序中,并在创建rootElement时使用Ember.Application选项。

rootElement之外的地方有几个地方,我想插入绑定到简单Ember.Object模型的小型ember模板。

我已经创建了一个jsfiddle,其中包含一个示例,我希望能够将我正在寻找的内容清楚地表达出来:http://jsfiddle.net/amiel/x9fCz/2/

这样做的最佳方式是什么?

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。