所以我认为这是一个简单的Ember对象。
App.Playlist = Ember.Model.extend({
_clips: [],
clips: function() {
var self = this;
if(this.get('clipIds')) {
this.get('clipIds').forEach(function(id) {
self.get('_clips').addObject({});
}
}
}.property('clipIds')
});
问题是剪辑计算属性被无限调用,直到它引发异常Uncaught RangeError: Maximum call stack size exceeded
答案 0 :(得分:1)
Ray,这应该以不同的方式定义。计算属性的定义与函数类似,当Ember观察到您定义的任何依赖项的更改时,它将处理调用函数。
App.Playlist = Ember.Model.extend({
myComputed: function () {
return this.get('clipIds').map(function (id) {
return Ember.Clip.create({id: id});
});
}.property('clipIds.@each'),
});
这段代码会看一些名为“clipIds”的属性(无论是什么),并会根据clipIds数组返回一个Ember.Clip对象列表。
答案 1 :(得分:0)
所以这就是我现在最终解决这个问题的方法。仍然不确定为什么重复调用计算属性。
App.Playlist = Ember.Model.extend({
clips: [],
loadClips: function() {
var self = this;
if(this.get('clipIds')) {
this.get('clipIds').forEach(function(id) {
self.get('clips').addObject({});
}
}
}.observes('clipIds.@each')
});