Ember.js 有没有办法通过手柄将静态引用(无绑定)设置到对象?

Ember.js 有没有办法通过手柄将静态引用(无绑定)设置到对象?,ember.js,Ember.js,jsFiddle胜于雄辩: 每个视图至少有一个这样的依赖项。控制器永远不会改变。所以我想知道,是否有一种方法可以通过手柄将视图连接到控制器实例,就像我在“directController”案例中尝试的那样?否则,我们将拥有大量绑定,这些绑定实际上什么都做不了,因为控制器不会改变 但也许没关系?我们是否应该担心Ember应用程序中存在大量未使用的绑定?您可以通过以下方法解决这两种情况: App.View = Ember.View.extend({ controller: null, // to

jsFiddle胜于雄辩:

每个视图至少有一个这样的依赖项。控制器永远不会改变。所以我想知道,是否有一种方法可以通过手柄将视图连接到控制器实例,就像我在“directController”案例中尝试的那样?否则,我们将拥有大量绑定,这些绑定实际上什么都做不了,因为控制器不会改变


但也许没关系?我们是否应该担心Ember应用程序中存在大量未使用的绑定?

您可以通过以下方法解决这两种情况:

App.View = Ember.View.extend({
  controller: null, // to be set at construction time
  modelBinding: 'controller.model',    
  template: Ember.Handlebars.compile("Hello, {{model}}!"),

  init: function() {
    var controller = (Ember.typeOf(this.get('controller')) == "string") ? Ember.getPath(this.get('controller')) : this.get('controller');

    this.set('controller', controller);

    this._super();
  }
});

我也进行了分叉和更新。

假设Ember没有内置的方法来完成这项工作,那么我喜欢您的方法。我可能会将其转换为某种基本视图类,以避免冗余代码。类似这样的事情:对于其他对此感兴趣的人,这里有一个更复杂的示例,它展示了此模式的灵活性,以及您如何将其用于单元测试:不,目前还没有内置的方法来实现这一点。不,您永远不应该像在
App.ViewWithInlineControllerRef
中那样将控制器硬编码到视图中。这违反了Ember中的核心MVC原则。旁注:我有一个个人扩展,在那里我可以做
{{view App.SomeView controllerGetObj=“App.directController”}
,所以这是可以内置的,但我还没有准备好提交一个pull请求,看看核心团队是否希望在Ember的核心中包含类似的东西。首先,我不相信“GetObj”动词,代码仍然很混乱,尽管它可以工作。也许有一天。。。