AngularJS如何更好地优化此过滤器?

时间:2014-02-02 15:47:08

标签: javascript angularjs

HTML:

    <list>
  <item ng-repeat="customer in customers | orderByPriority | samplesOnly:samples"  type="item-text-wrap" href="#/tab/customer/{{customer.$id}}">
    <h3>{{customer.name}}</h3>
    </item>
</list>

JS:

.filter('samplesOnly', function() {

return function(customers, samples) {

    var out = [];
    var samplelist = [];

    angular.forEach(samples, function(sample) {

        if (sample) {
            if (samplelist.indexOf(sample.customerId) == -1) {
                samplelist.push(sample.customerId);
            }
        }

    });

    angular.forEach(customers, function(customer) {

        if (customer.name && samples) {

            if (samplelist.indexOf(customer.$id) == -1) {
                //do not list
            } else {
                out.push(customer)
            }
        }
    });

    return out;
}

});

基本上,代码将我的客户列表和样本列表从控制器发送到视图,然后通过我的过滤器,如果有一个样本与客户的ID相关联,那么客户将列在html列表中。

到目前为止,我对Angular并不喜欢它。上面的代码工作正常,但感觉不对。 这是使用Angular对列表进行排序的正确方法吗?我的直觉告诉我没有。

0 个答案:

没有答案