2013-10-07 3 views
1

У меня есть модель крюк в моем объекте Маршрут, который выглядит следующим образом:модель не распространяющиеся на контроллер

model: function(params) { 
    // return an active filter for activities on given date 
    return this.store.filter('activity',function(activity){  
     var itemDate = new Date(activity.get('start_time')); 
     itemDate = moment(itemDate).format('YYYY-MM-DD'); 
     return itemDate === params.on_date; 
    }); 
} 

в маршруте currentModel получает заполняется DS.FilteredRecordArray со всеми соответствующими значениями, установленными, но по какой-то причине модель никогда передается контроллеру, поэтому мой шаблон {{#each}} {{/each}} остается пустым.

Я создал хак, где я Добавляется следующим маршрута:

setupController: function(controller, model) { 
    controller.set('model',this.get('currentModel')); 
} 

Это на самом деле работает при загрузке контроллера в первый раз, но затем переходит в бесконечный цикл, когда вы transitionTo к маршруту. Ах, хорошо, это был взлом в любом случае. Кто-нибудь знает, как я могу заставить это работать «Ужасный путь»?

+0

Не могли бы вы выслать код, в котором вы установили 'currentModel'? – chopper

+0

Я никогда не устанавливал 'currentModel' явно. Я просто предположил, что это часть темных искусств Эмбер. Я просто возвращаю объект из крюка 'model' в Route, и currentModel заселяется (с тем, что я ожидал бы в свойстве' model'. – ken

+0

Я никогда не слышал об этом сам, может быть, это внутренняя вещь? в любом случае я не уверен, почему это вам понадобится, поскольку модель передается в функцию 'setupController' в качестве параметра. Таким образом, все, что вам нужно сделать, это' controller.set ('content', model); Я также добавлю, что в качестве ответа - дайте мне знать, если это сработает для вас. – chopper

ответ

2

Вам нужно будет заполнить содержимое вашего контроллера с вашей моделью (результат вашей filter функции), как это:

setupController: function(controller, model) { 
    controller.set('content', model); 
} 

Хотя это также должно быть поведение по умолчанию, и я не думаю, что вы необходимо четко определить это.

+0

Это должно быть поведение по умолчанию, и это то, что меня озадачило, поскольку этого не произошло. Если вам интересно, я решил это по-другому. .. вы можете найти его здесь: http://stackoverflow.com/questions/19227183/using-set-on-an-array/19236283 – ken

+0

Итак, это исправлено? Обычно вам не нужно явно указывать его, но, возможно, это связано с тем, как вы настраиваете свой ресурс/маршрут в своем маршрутизаторе? – chopper

+0

Y эс. Все еще немного загадочно, поскольку я не думал, что я сделал что-то по-другому, но пока у меня есть рабочее решение, мне все равно придется продолжать. :) – ken

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