使用emberjs将模型绑定到模板

时间:2013-07-13 14:36:39

标签: templates ember.js render

我将使用emberjs将模型绑定到模板

<script type="text/x-handlebars" id="dashboard">
    <div>
        <span>this is user list</span>
        <div>
            {{render userinfo userinfo}}
        </div>
    </div>
</script>

<script type="text/x-handlebars" id="_userinfo">
   {{#each model}}
   <span>{{user}}
   {{/each}}
</script>

App.Userinfo= DS.Model.extend({
    user: DS.attr("string")
});

App.Userinfo.FIXTURES = [
    {user:"user1"},
    {user:"user2"},
    {user:"user3"}
];

App.UserinfoView= Ember.View.extend({
});

App.UserinfoController = Ember.ObjectController.extend({   
});


App.Router.map(function() {
    this.resource('dashboard', {path: '/dashboard'}, function() {
    });
});

App.DashboardRoute = Ember.Route.extend({
    renderTemplate: function() {
        this.render('dashboard', {      // the template to render
          controller: 'dashboard'       // the controller to use for the template
        }); 
    }
});

App.DashboardController = Ember.ObjectController.extend({ 
});

当我转到/#/ dashboard时,会加载仪表板模板 在这里,我已经渲染了userinfo。 我想将Userinfo Model绑定到usersinfo模板,以便显示所有用户。 请帮帮我。

1 个答案:

答案 0 :(得分:3)

简短:这是一个有效的jsbin.

长篇:你在代码中略微不必要地进行了多少工作,基本上这就完成了工作:

首先,您没有重定向到dashboard路线,因为它是您唯一的路线(至少从我的代码中可以看到)我们在进入index路线后直接重定向到它

App.IndexRoute = Ember.Route.extend({
  redirect: function() {
    this.transitionTo('dashboard');
  }
});

我删除了DashboardController,因为没有什么可以做的。 然后,您的DashboardRoute错过了model次约,以便为dashboard模板提供实际数据

App.DashboardRoute = Ember.Route.extend({
  model: function(){
    return App.Userinfo.find();
  }
});

在路由器地图中,如果网址与您的模板名称相同,则您无需定义path dashboard

App.Router.map(function() {
  this.resource('dashboard');
});

userinfo模型是正确的

App.Userinfo= DS.Model.extend({
  user: DS.attr("string")
});

但是您的灯具缺少id

App.Userinfo.FIXTURES = [
  {id:1, user:"user1"},
  {id:2, user:"user2"},
  {id:3, user:"user3"}
];

此外,您使用render模板partial的{​​{1}}帮助器,以及_userinfo呈现partial的正确方法是

{{partial userinfo}}

正如您所看到的,我们不会向其传递任何其他参数,因为数据将通过您的model挂钩提供。 partial帮助程序使用上下文以及呈现的模板中提供的数据,在您的情况下为dashboard模板,因此model挂钩是必需的。

希望它有所帮助。