【问题标题】:Ember Controller Model hook never calledEmber 控制器模型钩子从未调用过
【发布时间】:2013-11-26 03:53:35
【问题描述】:

当使用{{render "modelHandler" model}}时,对应控制器的model函数永远不会被调用。

转载于此:http://jsbin.com/EVoXAceP/3/edit

我 90% 确定这是一个错误。在我发布到 github 之前,我会在此处发布此内容,以防有明显我遗漏的内容或“我做错了”。无论哪种情况,如果你能指出我正确的方向。

用例(为什么我首先需要它来工作)。

我正在使用 {{render}} 来包含一个 AddressAdd 模板,为此我需要扩展模型以包含状态列表以及默认状态。虽然我可以将状态加载到父模型(比如属性或联系人卡片),但由于许多视图都包含 AddressAdd,我希望避免每次都手动添加下拉信息。

所以如果你碰巧知道除了 {{render}} 和控制器的模型钩子之外的更好的实现方法,请告诉我!

【问题讨论】:

    标签: javascript ember.js


    【解决方案1】:

    这不是错误,模型挂钩仅在您访问与该路由关联的 url 时触发,并且它存在于路由上,而不是控制器上。此外,如果你的控制器上有一个模型,它应该是一个 ObjectController(除非它是一个数组,那么它就是一个 ArrayController)。

    http://jsbin.com/EVoXAceP/13/edit

    当您调用 render 时,您是在说您想使用特定的上下文渲染特定的模板。

    我会在您所在的路线下方创建一条路线,并使用没有模型的链接,这将导致模型挂钩触发。

    【讨论】:

      【解决方案2】:

      在您的应用程序模板中

      {{ render 'foo' bar }}
      

      你不应该在 ApplicationController 中有一个bar 属性吗?

      App.ApplicationController = Ember.Controller.extend({
        bar: {isBar: 'yup'}
      });
      

      【讨论】:

      • 这原来是一个在深夜工作,忘记了模型钩子在路由上,而不是控制器的情况。不过谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多