我正在尝试Ember,并发现与文档的差异。我使用Ember CLI来ember generate template index
和ember generate route index
。然后我在index.js
中设置了一个简单的模型:
model: function () {
return {name: "Joe"};
}
从我阅读的文档和示例中,我希望能够在index.hbs模板中使用{{name}}
来访问此值,但我只能使用{{model.name}}
获取值。为什么呢?
答案 0 :(得分:2)
在Ember 1.11之前,你可以使用ObjectController,它就像对应路由model
的代理一样,你可以为{{name}}
写model.name
。
在Ember 1.11中弃用了ObjectController,详情如下:
http://emberjs.com/deprecations/v1.x/#toc_objectcontroller。因此,在最后的Ember版本中,您应该使用Controller
类而不是ObjectController
,它不能用作model
的代理。您可以将其视为Ember对象,其中model
属性来自相应的路径。所以{{name}}
表示Controller的属性,{{model.name}}
- 模型的属性。
例如:
//route
model: function () {
return {name: "Joe"};
}
//controller
import Ember from 'ember';
export default Ember.Controller.extend({
name: 'Marry'
});
//template
{{name}} //=> Marry
{{model.name}} //=> Joe
答案 1 :(得分:0)
我认为这可能是关于显性的问题,但我并非100%确定 - 您还可以将数据发送到除model
以外的属性上的模板,因此它可能是允许的更容易理解 - model
无论如何都是一个不好的财产名称IMO
如果语法过于冗长,您可以使用with
帮助程序:
{{#with story}}
<div class="intro">{{{intro}}}</div>
<div class="body">{{{body}}}</div>
{{/with}}