我将使用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模板,以便显示所有用户。 请帮帮我。
答案 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
挂钩是必需的。
希望它有所帮助。