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对列表进行排序的正确方法吗?我的直觉告诉我没有。