2014-01-02 4 views
0

У меня есть следующий массив:Более элегантный способ иметь проксированного Ember свойство массива

eligible_students: function() { 
    self = this; 
    this.store.find('user', App.CurrentUser.get('id')).then(function(user) { 
      console.log(user); 
      var students = user.get('students').then(function(students) { 
       console.log(students); 
       var results = user.get('students').map(function(item) { 
        return {student: item, queued: false}; 
       }); 
       console.log(results); 
       self.set('eligible_students', results); 
      }); 
     } 
    ); 
    return []; 
}.property('App.CurrentUser.id') 

Все работает отлично, но есть заикание, когда это оказывается, так как я добавляю результаты после возвращения пустого массива , Есть ли способ сделать это, который по своей сути использует преимущества Ember Promises? Или некоторые другие прекрасные функции?

Я рад предоставить более подробную информацию по запросу :)

+0

Что вы подразумеваете под заиканием? Только тот факт, что это происходит после того, как остальное отображается? – Kingpin2k

+0

Да, это медленно, но, может быть, этого и следовало ожидать? – blaineh

+0

медленный после ответа сети? ответ студентов возвращается, и для составления списка студентов требуется некоторое время? или процесс сверления и получения подходящих студентов требует времени? – Kingpin2k

ответ

1

Если вы хотите ждать страницы, чтобы сделать, пока не будут загружены пользователями, то вы должны использовать модель крюк в маршрутизаторе. Вы можете использовать Ember.RSVP.hash (https://stackoverflow.com/a/20523510/1234490), чтобы возвращать сразу несколько моделей. Затем в контроллере вы можете добавить функцию eligibleStudens. Я думаю, что он должен находиться в контроллере, так как он, например, по строкам функции completedTodos.

Таким образом, вы не заметите заикания. Lemme знает, если он работает :)

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