在Ember Data中过滤子记录

我一直没能筛选对象childrecords在ArrayController。

我的模型的结构是这样的:

var Shop = DS.Model.extend({
    name: DS.attr('string'),
    products: DS.hasMany('product')
});

var Product = DS.Model.extend({
    name: DS.attr('string'),
    shop: DS.belongsTo('shop')
});

商店有很多产品,产品属于一家商店。 我想根据Ember.TextField过滤每个父代的子记录 。 如果我只使用正则表达式筛选基于他们拥有的属性的父记录,则筛选工作。

productSearchResults: function() {
    var productSearchTerm = this.get('productSearchTerm');
    var regExp = new RegExp(productSearchTerm,'i');

    Ember.Logger.log('productSearchTerm', productSearchTerm);

    var filteredResults = this.map(function(shop){
        var products = shop.get('products');
        return products.filter(function(product){
            regExp.test(product.get('name'));
        });
    });
    // all items are returned always..
    return filteredResults;
}.property('products.@each', 'productSearchTerm')

编辑

我试着在这里使用promises(source:用Ember.js过滤child-records(hasMany关联)),但似乎这个productSearchResults属性永远不会被访问。 我没有从这里得到任何日志输出。 在模板中,我正在循环遍历filteredProducts,并且没有任何内容。 如果它有任何相关性,我使用Ember 1.5.0和Ember Data 1.0.0-beta.7 + canary.b45e23ba。

   productSearchResults: function() {
        var _that = this;
        var productSearchTerm = this.get('productSearchTerm');
        var regExp = new RegExp(productSearchTerm,'i');

        this.store.find('shop').then(function(shops) {
            var promises = shops.map(function (shop) {
                return Ember.RSVP.hash({
                    shop: shop,
                    products: shop.get('products').then(function (products) {
                        return products.filter(function (product) {
                            return regExp.test(product.name);
                        });
                    })
                });
            });

            Ember.RSVP.all(promises).then(function (filteredProducts) {
                _that.set('filteredProducts', filteredProducts);
            });
        });
    }.property('products.@each', 'productSearchTerm')
链接地址: http://www.djcxy.com/p/65583.html

上一篇: Filtering child records in Ember Data

下一篇: Create record with hasMany relationship