第二个参数应该是模型,但在我的例子中它不起作用:
模板:
<script type="text/x-handlebars" data-template-name="guestlist">
{{#each}}
<div class="visitor-li">
<div class="user-name">{{name}}</div>
<div class="clear"></div>
</div>
{{/each}}
</script><!-- end with x-handlebars -->
javascript:
window.WorkBench = Ember.Application.create({});
WorkBench.ApplicationAdapter = DS.FixtureAdapter.extend();
WorkBench.Guestlist = DS.Model.extend({
name: DS.attr("string")
});
WorkBench.Guestlist.FIXTURES = [
{ id: 1, name: 'aaa' },
{ id: 2, name: 'bbb' },
{ id: 3, name: 'ccc' }
];
WorkBench.GuestlistController = Ember.ArrayController.extend({});
HTML
<div id="con_taba_1">
{{render "guestlist" guestlist}}
</div>
应该显示一个列表,但是没有去。我想知道原因,谢谢!
答案 0 :(得分:0)
第二个参数需要实际存在于您正在使用它的上下文中。您正在传递未定义的属性。
证明这一点的一种方法是在那里注销guestlist
<div id="con_taba_1">
{{log guestlist}}
{{render "guestlist" guestlist}}
</div>
guestlist
属性需要存在于使用render语句的范围内,通过记录this
可以看到该上下文(我告诉你,但你已经遗漏了那个信息)。
<div id="con_taba_1">
{{log this}}
{{log guestlist}}
{{render "guestlist" guestlist}}
</div>
通常,模型信息是从与model
相关的route
钩子中提供的。
App.FooRoute = Em.Route.extend({
model: function(){
return { bar:'baz'};
}
});
在foo
模板中,您可以执行{{log bar}},然后您会看到baz
。
这是一个可供您设置的游乐场,http://Emberjs.jsbin.com