2015-02-23 2 views
0

Я пытаюсь получить одну модель для загрузки в свой ObjectController, и мне трудно найти ее в моем шаблоне. Мои другие маршруты использовать ArrayController поэтому, когда я нахожусь в шаблоне я просто сделать следующую итерацию по каждому объекту:Получение данных из модели с использованием ObjectController из шаблона в Ember CLI

{{#each item in model}} 
    .. 
    {{item.firstName}} 
    .. 
{{/each}} 

Но я не могу понять, как это сделать, если не более, чем один элемент в модели. Рассматривая следующую ссылку: Ember.js Docs on ObjectController, она должна быть невероятно легкой, но моя, похоже, не работает должным образом. Ниже приведен код, который я использую. Любая помощь приветствуется. Благодаря!

приложение/router.js:

import Ember from 'ember'; 
import config from './config/environment'; 

var Router = Ember.Router.extend({ 
}); 

Router.map(function() { 

    this.route('login', {path: '/'}, function(){ 
     this.resource('login'); 
    }); 

    this.route('items', {path: '/items'}, function(){ 
     this.resource('items'); 
    }); 

    this.route('item-details', {path: '/item/:item_id'}, function(){ 
     this.resource('item-details'); 
    }); 

}); 
export default Router; 

приложение/маршруты/пункт-details.js:

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model: function(params){ 
     return this.store.find('item-details'); 
    } 
}); 

приложение/модели/пункт-details.js:

import DS from 'ember-data'; 

var ItemDetails = DS.Model.extend({ 
    itemNumber: DS.attr('string') 
}); 

ItemDetails.reopenClass({ 
    FIXTURES: [ 
     {id: 1, itemNumber: '0000001'} 
    ] 
}); 

export default ItemDetails; 

приложение/контроллеры/детали-подробности.js:

import Ember from 'ember'; 

export default Ember.ObjectController.extend({ 
}); 

приложение/шаблоны/пункт-details.hbs:

Item Number: {{itemNumber}}<br/> 
{{model}}<br/> 
{{model.itemNumber}}<br/> 
{{model.data.itemNumber}}<br/> 
{{content.itemNumber}}<br/> 
{{model.content.0.itemNumber}}<br/> 

Отображаемое значение шаблона, когда я бегу выше является:

Item Number: 
<DS.RecordArray:ember377> 
<three blanks> 
0000001 

Я также проверить, что DS действительно становится создано , Я могу просмотреть его в отладчике Ember.

ответ

0

Коллега моего понял это, вот что мы сделали:

приложения/маршруты/пункт-details.js:

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model: function(params){ 
     return this.store.find('item-details', params.item_id); 
    } 
}); 

приложения/модель/пункт-details.js:

import DS from 'ember-data'; 

var ItemDetails = DS.Model.extend({ 
    itemNumber: DS.attr('string') 
}); 

ItemDetails.reopenClass({ 
    FIXTURES: [ 
     {id: '0000001', itemNumber: '0000001'} 
    ] 
}); 

export default ItemDetails; 

Проблема заключается в том, что она все еще возвращала массив элементов, поскольку она потенциально получала более одного элемента из хранилища данных с использованием нотации .find() изначально?

В любом случае с изменениями выше следующего шаблона работал и отображается соответствующим образом:

Item Number: {{itemNumber}} 
Смежные вопросы