我在Ember应用程序中转换模型对象时遇到了问题。
我有一个calendar
路由,它定义了一个类似的模型。
this.store.findAll('competency');
我正在尝试在控制器方法calendarItems
中转换从此返回的数据,该方法被定义为属性。
我想做的是拿走我的模型并在其上调用map函数,转换对象并将其作为属性返回。
我已将控制器更改为ArrayController以允许调用Enumberable方法,但仍然没有运气。我可以this.get('model').map
我绊倒的任何想法?也许我的方法已经解决了,但基本上我只想转换模型并将数据呈现给模板。
提前致谢! 莱恩
修改
这是我的转换逻辑,但模板中记录的数组只是[]。
export default Ember.Controller.extend({
calendarItems: Ember.computed('model', function () {
return this.get('model').map(function(competency) {
return 1;
}, this);
})
});
console.log(this.get('model').get('length'));
返回0,这使我假设我没有来自商店的模型项来迭代一个可以解释空白数组。但是,如果我在模板中放置一个{{#each}}
来打印模型,我将收到3个模型。
修改
日历路线
model:
return this.store.findAll('competency');
}
日历控制器
calendarItems: Ember.computed('model', function () {
return this.get('model').map(function(competency) {
return 1;
}, this);
})
日历模板
{{log calendarItems}}
答案 0 :(得分:0)
您有两个主要选择。
首先,模型中的计算属性。来自docs的示例:
export default DS.Model.extend({
firstName: DS.attr(),
lastName: DS.attr(),
fullName: function() {
return this.get('firstName') + ' ' + this.get('lastName');
}.property('firstName', 'lastName')
});
在模板中,您可以像这样使用它:
{{#each model as |item|}}
{{item.fullName}}
{{/each}}
第二,控制器中的计算属性,基于模型。控制器示例:
import Ember from 'ember';
export default Ember.Controller.extend({
something: Ember.computed('model', function () {
var ret = [];
this.get('model').forEach(function(item) {
ret.push(item.get('something'));
}, this);
return ret;
})
});
模板示例:
{{#each something as |item|}}
{{item}}
{{/each}}
,您可以定义帮助程序,将每个项目传递给它并返回您需要的内容。有关此方法的更多信息here