2015-02-23 37 views
0

我试图让单个模型加载到我的ObjectController中,并且我很难让它显示在我的模板中。我的其他途径使用ArrayController所以当我在模板我我只是做了以下遍历每个对象:使用Ember CLI中的模板使用ObjectController从模型中获取数据

{{#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; 

app/controllers/item-details.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}} 
相关问题