2016-07-31 3 views
0

В шаблоне динамического сегмента, как вы отображаете данные из модели с использованием маршрута?Ember: Как получить доступ к другим данным модели в шаблоне динамического сегмента

так, например, у меня есть эти три маршрута с phone_id как динамическим сегментом

Router.map(function() { 
    this.route('phones'); 
    this.route('phone', {path: 'phones/:phone_id'}); 
    this.route('numbers'); 
}); 

в phones/:phone_id шаблоне, я пытаюсь показать все модели номера. поэтому в маршруте phone.js я попытался вернуть модель номера и вывести его, но он ничего не показал.

import Ember from 'ember'; 

export default Ember.Route.extend({ 

    numbers(){ 
    return this.get("store").findAll('number') 
    } 

}); 

Я пробовал также с params.phone_id в качестве аргумента, но это не сработало. (также не было обнаружено ошибок).

шаблон phone.hbs выглядит

<h5> Device Id: {{model.device_id}}</h5> 


{{#each numbers as |number|}} 
{{number.digits}} 
{{/each}} 

Забавная вещь model.device_id возвращает правильный, хотя я даже не поставил его, чтобы вернуться, что в phone.js маршруте. Но каждый цикл для numbers, который я реализовал для чего-то, ничего не возвращает.

Есть ли обходной путь для возврата данных о числовой модели в phone.hbs динамический сегментный шаблон?

EDIT:

пути я достичь моего динамичного сегмента через ссылку на:

{{#each phones as |phone|}} 
    <li>{{#link-to 'phone' phone}} {{phone.id}}{{/link-to}}</li> 
{{/each}} 

ответ

2

Только объект из вернулся из модели крюка маршрута устанавливаются в качестве модели контроллера.

Если вы хотите использовать номера, как в шаблоне, тогда напишите его как вычисленное свойство в контроллере.

numbers:Ember.computed(function(){ 
    return this.store.findAll('number'); 
}); 

или вы можете установить эти свойства в модели сама

так модель крюк вашего маршрута будет выглядеть

model:function(params){ 
return Ember.RSVP.hash({ 
    phone: this.store.findRecord('phone',params.phone_id), 
    numbers: this.store.findAll('number') 
}); 
} 

после этого вы получите два свойства в модели

Теперь ваш шаблон будет выглядеть так:

<h5> Device Id: {{model.phone.device_id}}</h5> 


{{#each model.numbers as |number|}} 
{{number.digits}} 
{{/each}} 
+0

Они не работают в шаблоне 'phone.hbs', но работают в других шаблонах. похоже, что модель перезаписывается, потому что это динамический сегмент –

+0

скажите мне, что одна вещь: вы достигли этого динамического сегмента маршрута через linkTo? если вы используете linkto и передаете phoneModel в качестве параметра insted id, тогда в этом случае пропускается промах модели, и модель контроллера будет установлена ​​на модель u, переданную из linkTo. –

+0

Да, я вижу, пожалуйста, мое редактирование, и дайте мне знать, как я могу передать id вместо параметра модели, как вы упоминали. –

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