模型参数在{{render}}帮助器中不起作用

时间:2014-04-22 01:19:17

标签: javascript ember.js

第二个参数应该是模型,但在我的例子中它不起作用:

模板:

<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>

应该显示一个列表,但是没有去。我想知道原因,谢谢!

1 个答案:

答案 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