Bar 개체와의 관계에 "bar"특성이있는 Foo 개체에 대한 ArrayController가 있습니다. ArrayController 속성 및 고유 필터의 속성으로 필터링
var Foo = DS.Model.extend({
bar : DS.belongsTo('bar', {async:true})
});
var Bar = DS.Model.extend({
foos : DS.hasMany('foo', {async:true})
});
내가 FOOS의 배열에서 볼 수있는 독특한 바의 계산 된 속성이 있습니다 (일부 FOOS 공통점이 같은 줄을 공유).
var FooArray = Ember.ArrayController.extend({
bars: function(){
return this.get('content').getEach('bar');
}.property("@each.bar"),
unique_bars : function(){
return Ember.A(_.uniq(this.get('bars'), function(c){return c.get('id');}));
}.property("bars"),
});
Underscore.uniq은() Ember.Array.uniq 당신이 비교를 지정하지 않기 때문에이 사용됩니다. Ember.Comparable mixin이 있지만 전체 클래스에 대해 하나의 고유성 비교자를 정의 할 것입니다. 다른 환경에서 일부 속성을 기반으로 고유성을 찾기를 원하기 때문에 관심이 없습니다.
고유 한 하위 속성을 찾는 방법은 개선이 필요할 수 있습니다. 어쨌든 위의 코드는 예상대로 작동하지 않습니다 (20)
Ember.A(_.uniq(foo_array.get('bars'), function(c){return c.get('id');}))
작품 잘가 있어야하지만
foo_array.get('unique_bars')
1 줄을 포함하는 배열을 얻을 수 있습니다. 더 큰 숫자의 고유 한 모음 20 개.
'unique_bars'속성은 첫 번째 Foo가 foo_array에 추가 된 후에 한 번만 평가됩니다.
그렇다면 관찰자 표현은 무엇이 잘못 되었을까요? 또는 {async : true}가이 작업을 방해합니까?