1

我将使用 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 模型绑定到 usersinfo 模板,以便显示所有用户。请帮帮我。

4

1 回答 1

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在路由器映射中,如果 URL 与您的模板名称相同,则无需定义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模板的助手,_userinfo正确的渲染方式partial是这样的

{{partial userinfo}}

正如你所看到的,我们没有向它传递任何额外的参数,因为数据将通过你的model钩子提供。partial帮助程序使用模板中提供的上下文和数据,在您的情况下是模板dashboard,因此model钩子是必要的。

希望能帮助到你。

于 2013-07-13T14:54:28.030 回答