0

我正在将 Ember.js 添加到现有的 Rails 应用程序中,并rootElement在创建我的Ember.Application.

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

我创建了一个带有示例的 jsfiddle,我希望它可以使我正在寻找的内容变得清晰:http: //jsfiddle.net/amiel/x9fCz/2/

做这个的最好方式是什么?

4

2 回答 2

1

我创建了一个新的 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');
    }
});
于 2013-09-13T00:47:48.330 回答
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。

于 2014-08-19T01:16:11.263 回答