Javascript 如果传递模型,则属于渲染辅助对象的控制器将重置

Javascript 如果传递模型,则属于渲染辅助对象的控制器将重置,javascript,ember.js,Javascript,Ember.js,我注意到余烬中的一个行为对我来说毫无意义。我不确定这是一个bug还是一个特性。在后一种情况下,我真的很感兴趣为什么这是一种期望的行为。现在我们开始: 确保您可以看到浏览器控制台的输出 打开门。注意从IndexController和FoobarController提交的两条init消息 点击“添加一个”按钮。执行此操作,以便FoobarController上有一些状态 单击“转到hello”链接以转换到hello路由 通过链接返回索引 count变量仍然具有该值。一切都好 现在有一个问题。我将模型

我注意到余烬中的一个行为对我来说毫无意义。我不确定这是一个bug还是一个特性。在后一种情况下,我真的很感兴趣为什么这是一种期望的行为。现在我们开始:

  • 确保您可以看到浏览器控制台的输出
  • 打开门。注意从
    IndexController
    FoobarController
    提交的两条init消息
  • 点击“添加一个”按钮。执行此操作,以便
    FoobarController
    上有一些状态
  • 单击“转到hello”链接以转换到hello路由
  • 通过链接返回索引
  • count变量仍然具有该值。一切都好 现在有一个问题。我将模型传递给渲染辅助对象。 再次按照上述步骤操作。在步骤5之后,您会看到计数现在为0,并且“init FoobarController”再次出现

    在传递模型时,属于渲染辅助对象的控制器会以某种方式重置。我找不到任何关于为什么会发生这种情况的信息,也找不到任何有意义的原因。

    如果指定了模型属性路径,则将创建控制器的新实例,并且可以使用相同的名称多次使用{render}


    传递第二个参数将重新实例化
    FoobarController
    ,这基本上将计数重置为0,而不传递模型参数将创建
    FoobarController

    的单例实例,谢谢!这对我来说很有意义!我想这是正确的答案。注:以上的参考是。答案似乎是正确的,但我仍然不确定这是否是一个有用的行为。在我看来,渲染控制器的寿命应该和其他控制器一样长……这是一种连贯的行为……但这是一个问题,而不是继续问下去