ArrayController按属性和唯一过滤器的属性进行过滤

普雷尔

我有一个用于Foo对象的ArrayController,它们具有与Bar对象的关系的“ bar”属性。

var Foo = DS.Model.extend({
    bar    : DS.belongsTo('bar', {async:true})
});

var Bar = DS.Model.extend({
    foos   : DS.hasMany('foo', {async:true})
});

我有一个针对Foos数组中发现的唯一柱的计算属性(某些Foos共享相同的Bar)。

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"),

});

因为Ember.Array.uniq不允许您指定比较器,所以在此处使用Underscore.uniq()。Ember.Comparable mixin,但是它将为整个类定义一个唯一性比较器,这让我不感兴趣,因为我想根据不同情况下的某些不同属性来找到唯一性。

查找唯一子属性的方法可能需要改进。无论如何,以上代码无法按预期工作:

foo_array.get('unique_bars')

产生一个包含1 Bar的数组,尽管应该为20。

Ember.A(_.uniq(foo_array.get('bars'), function(c){return c.get('id');}))

效果很好。20条,从更大的数量开始的独特设置。

我相信在将第一个Foo添加到foo_array后,“ unique_bars”属性仅计算一次。

那么观察者表达式有什么问题呢?还是{async:true}干扰了这一点?

劲派2k

您应该能够使用getEach获取条形图和id,然后对ids集合使用uniq。然后您可以在每个栏上观看ID

var FooArray = Ember.ArrayController.extend({
    bars: function(){
       return this.getEach('bar');
    }.property("@each.bar"),

    bar_ids : function(){ 
      return this.get('bars').getEach('id');
   }.property("[email protected]"),

   unique_ids: Em.computed.uniq('bar_ids')
});

示例:http//emberjs.jsbin.com/OxIDiVU/1102/edit

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ArrayController按属性和唯一过滤器的属性进行过滤

来自分类Dev

具有OR和AND条件的唯一过滤器

来自分类Dev

AngularJS唯一过滤器不起作用

来自分类Dev

Angular.js:数组中的重复和唯一过滤器

来自分类Dev

具有多个OR和AND条件的唯一过滤器

来自分类Dev

对象唯一属性值的jq过滤器数组

来自分类Dev

angularJs唯一过滤器-未获得唯一的数组长度

来自分类Dev

唯一过滤器在Angular.js中无法正常工作

来自分类Dev

如何在anguarljs中使用带有某些条件的唯一过滤器

来自分类Dev

Vue 在同一个过滤器中按两个属性过滤

来自分类Dev

Sparql属性过滤器

来自分类Dev

Sparql属性过滤器

来自分类Dev

SPARQL在同一过滤器中查询多个OR

来自分类Dev

如何按集合的嵌套属性对过滤器选项进行分组。单选框

来自分类Dev

EF按属性/类型做预过滤器表

来自分类Dev

计算属性,过滤器和DOM更新

来自分类Dev

AWS CLI和JMESPath过滤器并选择嵌套属性

来自分类Dev

计算属性,过滤器和DOM更新

来自分类Dev

按数据属性过滤对象,并在每次使用时重置过滤器

来自分类Dev

AngularJS过滤器的深度属性

来自分类Dev

角度转换属性与过滤器

来自分类Dev

基于Magento Ajax的属性过滤器

来自分类Dev

子属性的角度过滤器

来自分类Dev

过滤器数组并返回特定属性

来自分类Dev

XPath后代属性过滤器包含

来自分类Dev

子属性的角度过滤器

来自分类Dev

过滤器对象返回属性

来自分类Dev

AngularJS过滤器的深度属性

来自分类Dev

Odoo域过滤器作为属性