我正在开发一个简单的餐厅菜单,我有一个这样的代码可以正常工作:
<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/
答案 0 :(得分:1)
它适用于this.id
,因为{{link-to}}
帮助程序可以执行:
"dish"
。a
标题属性。当您将模型传递给路径时,它不会从远程服务器获取模型数据,它会“按原样”并将其传递给控制器。
如果将id传递给helper,它确保以id作为参数运行route的模型钩子,检索模型的数据。
在您的代码中,您传递的this
是Category
模型。 DishRoute
适用于Dish
型号,因此无效。
如果你传递this.id
它是有效的,因为它是一个整数,而Ember将获取恰好与Dish
实例{{1}相同的id
的{{1}}设置为。
有疑问,请阅读官方文档(http://emberjs.com/guides/templates/links/)