2014-02-04 5 views
2

Я застрял с очень простой вещью в Ember .. Я пытаюсь настроить модель, если бы я сохранил некоторую информацию из логина, и я хочу использовать ее после этого на другой странице.Ember получить данные из магазина

Пример: mysite.com/ (форма Логина) => MySite/дома (на домашнюю страницу, где я хочу, чтобы отобразить некоторую информацию из/с моей моделью)

Я сделал это до сих пор:

в моем App.LoginController:

var login = this; 
     $.ajax({ 
      url: host, 
      type: 'POST', 
      data: data, 
      accepts: 'application/json', 
      success: function(data) { 
       login.reset(); 
       console.log("DEBUG: Login Succeed"); 
       login.store.push('user', { 
        id: data.session.user.id, 
        username: data.session.user.username, 
        firstname: data.session.user.firstname, 
        lastname: data.session.user.lastname, 
        email: data.session.user.email, 
        domainid: data.session.user.domainid, 
        role: data.session.user.role, 
        status: data.session.user.status 
       }); 
       login.transitionToRoute('home'); 

в моей модели:

App.User = DS.Model.extend({ 
    domainid: DS.attr('string'), 
    email:  DS.attr('string'), 
    firstname: DS.attr('string'), 
    lastname: DS.attr('string'), 
    role:  DS.attr('string'), 
    status:  DS.attr('string'), 
    username: DS.attr('string') 
    fullName: function(){ 
    return this.get('firstname') + ' ' + this.get('lastname'); 
    }.property('firstname', 'lastname') 
}); 

и здесь мой маршрутизатор:

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

App.HomeRoute = Ember.Route.extend({ 
    model: function() { 
     return this.store.find('user'); 
    } 
}); 

Edit (забыл поставить свой шаблон)

<script type="text/x-handlebars" data-template-name="home"> 
<div class="group-detail"> 
    <div class="group-label"> 
     <label>Agent: {{fullName}}</label> 
    </div> 

    <div class="group-label"> 
     <label>Account: {{username}}</label> 
    </div> 

    <div class="group-label"> 
     <label>Status: {{status}}</label> 
    </div> 
</div> 

<div class="enquiry link"> 
    {{#link-to 'enquiries'}}Enquiries{{/link-to}} 
</div> 

Я видел, моя информация сохраняется в данных Эмбер: Модель Тип: App.User

И У меня есть эта ошибка:

GET http://localhost/users 404 (Not Found) 
Error while loading route: undefined 

Я думаю, это должно быть очевидно, но я не знаю.

Благодарим за помощь!

+0

Должен сказать, что я попытался использовать this.store.all ('user') У меня нет никаких ошибок, но я ничего не получаю от этого ... Его странно, потому что я вижу запись с отладчиком ember?!? – SuperMarco

ответ

0

я понял что-то, но я не думаю, что его наиболее симпатичный способа сделать это ..

Для моего шаблона я использовал {{#each}} для отображения информации из магазина :

<script type="text/x-handlebars" data-template-name="home"> 
    {{#each}} 
    <div class="group-detail"> 
     <div class="group-label"> 

      <label>Agent: {{fullName}}</label> 

     </div> 

     <div class="group-label"> 
      <label>Account: {{username}}</label> 
     </div> 

     <div class="group-label"> 
      <label>Status: {{status}}</label> 
     </div> 
    </div> 
    {{/each}} 
    <div class="enquiry link"> 
     {{#link-to 'enquiries'}}Enquiries{{/link-to}} 
    </div> 

</script> 

И для App.HomeRoute я использовал store.all ('пользователя'):

App.HomeRoute = Ember.Route.extend({ 
    model: function() { 
     return this.store.all('user'); 
    } 
}); 

Так ... его работы, но можно получить только один пользователь из магазина и отобразить его без каждый каждый?

0

Я знаю, что этот вопрос несколько месяцев, но я думаю, что это, как вы можете исправить вашу страницу:

В вашем App.LoginController, сделайте следующее:

login.transitionToRoute('home', data.session.user.id); 

В вашем маршрутизаторе делать:

this.resource('home', { path: ':user_id' }); 

В вашем пути сделать:

model: function(params) { 
    return this.store.find('user', params.user_id); 
} 

Это должно сделать трюк, на который я верю.

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