0
App.Chart = DS.Model.extend({
tags: DS.hasMany('tag'),
sameTag: function() {
var id = this.get('id');
var tags = this.get('tags');
return this.store.filter('chart', function(q) {
return Ember.isEqual(q.get('tags'), tags);
});
}.property('tags')
});
App.Tag = DS.Model.extend();
失败,因为Ember.isEqual(q.get('tags'), tags)
在OrderedSets是false
即使两个模型具有相同的标签,他们都有自己的加载标签。相反,我不得不作出一个计算的属性,给我的东西,与Ember.isEqual
工作:
App.Chart = DS.Model.extend({
tags: DS.hasMany('tag'),
sameTag: function() {
var id = this.get('id');
var tags = this.get('_tagsKey');
return this.store.filter('chart', function(q) {
return Ember.isEqual(q.get('_tagsKey'), tags);
});
}.property(),
_tagsKey: function(){
var tags = [];
this.get('tags').forEach(function(tag){
tags.push(tag.id);
});
return tags.join(",");
}.property('tags')
});
这是绕了一个相当令人费解的方式。