问题与EmberJS link-to helper

时间:2013-12-05 20:50:14

标签: javascript ember.js

我正在开发一个简单的餐厅菜单,我有一个这样的代码可以正常工作:

  <script type="text/x-handlebars" data-template-name="application">
      <h1> Categories </h1>
      {{#each}}
        {{#link-to "dish" this.id}} {{name}} {{/link-to}} 
        </br>
      {{/each}}
      {{outlet}}
  </script>

它有效,但我仍然无法弄清楚为什么我应该将this.id传递给link-to的参数。初始我刚刚将this传递给帮助器并且它不起作用(为什么?)并且仅在调试一段时间之后我才使用this.id

问题是,为什么它与this.id一起使用并且不适用于this?到目前为止我看到的所有示例都使用this,因此使用this.id是一种好方法吗?请解释一下!

以下是完整代码http://jsbin.com/AcoHeNA/44/

1 个答案:

答案 0 :(得分:1)

它适用于this.id,因为{{link-to}}帮助程序可以执行:

  • 路线的名称。在这种情况下,它将是"dish"
  • 每个动态细分最多只有一个模型。
  • 可选标题,将绑定到a标题属性。

当您将模型传递给路径时,它不会从远程服务器获取模型数据,它会“按原样”并将其传递给控制器​​。

如果将id传递给helper,它确保以id作为参数运行route的模型钩子,检索模型的数据。

在您的代码中,您传递的thisCategory模型。 DishRoute适用于Dish型号,因此无效。

如果你传递this.id它是有效的,因为它是一个整数,而Ember将获取恰好与Dish实例{{1}相同的id的{​​{1}}设置为。

有疑问,请阅读官方文档(http://emberjs.com/guides/templates/links/