【发布时间】:2016-04-02 18:07:06
【问题描述】:
大家好,
型号:
-
课程
title: DS.attr('string'), guild: DS.belongsTo('guild') -
公会
title: DS.attr('string'), color: DS.attr('string')
我在课程控制器中为全日历创建结构
events: function(){
var lessons = this.get('model');
var events = [];
lessons.map(function(lesson){
events.push({
'title' : lesson.get('title'),
'start' : lesson.get('start'),
'end' : lesson.get('end'),
'color' : lesson.get('guild.color'), // return undefined
'lesson': lesson
});
});
return events;
}.property('model')
或
events: function(){
var lessons = this.get('model');
var events = [];
lessons.map(function(lesson){
events.push({
'title' : lesson.get('title'),
'start' : lesson.get('start'),
'end' : lesson.get('end'),
'color' : lesson.get('color'), // return undefined
'lesson': lesson
});
});
return events;
}.property('model')
但是在解决 course.guild.color 关系时遇到了麻烦 我尝试在模型中添加从公会计算颜色的新属性,如下所示:
title: DS.attr('string'),
guild: DS.belongsTo('guild'),
color: function(){
return this.get('guild.color');
}.property('guild.color')
谢谢,英格玛。 但这仅适用于 Handlebars,因为它解决了所有承诺。
如果有人知道如何从公会实体获得正确的颜色,那就太好了..
嘿,我试试这个:
events: function(){
var lessons = this.get('model');
var events = [];
var guildPromisses = lessons.getEach('guild');
return Ember.RSVP.all(guildPromisses).then(function(guilds){
return lessons.map(function(lesson){
events.push({
'title': lesson.get('title'),
'start': lesson.get('start'),
'end': lesson.get('end'),
'color': lesson.get('guild.color')
});
});
}).then(function(result){
return events;
});
}.property('model'),
这项工作,但我认为它会返回 Promise :)
【问题讨论】:
-
很好的帮助,-1... 没有一个 cmets :)
-
这个语法是什么 Ember.computed('guild', function()....).property('guild') ?我认为这是其中之一,但不是同时都有
-
如果我认为正确的话,首先“公会”用于预加载计算,第二个是在“公会”更改之后。我还尝试了另一种变体,Ember.computed(function(){}) .property('guild'), function(){}.property('guild')
-
公会中的问题之前未解决,并且包含承诺的数组未将其解析为变量。如果我是对的,那么 course.get('guild').get('color') 应该是 -> course.get('guild').then(function(guild){ return guild.get('color'); } )...在我将记录添加到列表之前应该解决构造返回承诺和承诺
-
您是否尝试在控制器/组件中或仅在模型中添加该计算属性?来自 engma 的建议应该确实有效,它一直对我有用(有加载和尚未加载的关系)。您可以将控制器/组件发布到您想要访问该属性的位置吗?
标签: ember.js ember-data undefined belongs-to rsvp.js