2013-07-13 3 views
1

я собираюсь связать модель с шаблоном с emberjsBinding модели шаблона с 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({ 
}); 

Когда я иду к/#/приборной панели, шаблон приборной панели загружается.
Здесь я предоставил userinfo. Я хотел бы привязать модель Userinfo к шаблону usersinfo, чтобы отобразить всех пользователей. Помогите мне, пожалуйста.

ответ

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

Как вы можете видеть, мы не 't передать ему какие-либо дополнительные параметры, потому что данные будут доступны через ваш крючок model. Помощник partial использует контекст и данные, предоставленные в шаблоне, который он отображает, в вашем случае шаблон dashboard, поэтому необходим крючок model.

Надеюсь, это поможет.

+0

Привет, спасибо. и затем я должен перейти на панель инструментов, когда я нажму кнопку входа в систему. поэтому я думаю, что мне не нужно использовать функцию, например, переход. как мне теперь делать это сейчас? –

Смежные вопросы