Đây là lần đầu tiên tôi chơi với AngularJS và trên thực tế, tôi đang làm theo hướng dẫn bắt đầu. Tôi nghĩ rằng tôi sẽ tinh chỉnh các kịch bản hướng dẫn để hiểu của tôi, bằng cách thêm một chút mà không có trong hướng dẫn.Bộ lọc ng-lặp góc có chức năng biến vị ngữ không hoạt động như mong đợi
Về cơ bản, đối tượng điện thoại sử dụng trong hướng dẫn là:
{
"age": 1,
"id": "motorola-xoom",
"imageUrl": "img/phones/motorola-xoom.0.jpg",
"name": "MOTOROLA XOOM™",
"snippet": "The Next, Next Generation..."
}
Những gì tôi đang cố gắng làm là thêm một ô tô dân chọn hộp cho đơn đặt hàng trong danh sách:
<select ng-model="orderProp">
<option ng-repeat="(key, value) in phones[0]" value="{{key}}">
{{labels[key]}}
</option>
</select>
và thêm một mô hình nhãn vào bộ điều khiển:
$scope.labels = {
"name": "Phone name",
"snippet": "Description",
"age": "Newest",
};
Đó là làm việc như mong đợi, ngoại trừ việc tôi chỉ muốn lọc 3 đặc tính trên, vì vậy tôi nghĩ rằng nó sẽ được dễ dàng để thêm một tùy chỉnh xác chức năng để lọc như thế này:
$scope.isPhonePropFilterable = function (propName) {
console.log('it DOES NOT get here!!!');
return propName == 'name' || propName != 'snippet' || propName != 'age';
};
và bổ sung này để ng-repeat
<option ng-repeat="(key, value) in phones[0] | filter:isPhonePropFilterable" value="{{key}}">
Tôi thật sự không dễ dàng như tôi nghĩ, chức năng lọc của tôi không được gọi.
Xem tại đây: plunker
Tôi có làm gì sai không?
chỉnh sửa: ng-lặp lại lọc hỗ trợ lọc mảng chỉ, không phản đối. Hàm lọc trả lại nếu mảng thông số không phải là một mảng ...
Vâng, đó là lỗi của tôi. Bộ lọc Ng-repeat chỉ hỗ trợ ** mảng **, nó chỉ đề cập đến mảng trong tài liệu. Và kiểm tra chức năng lọc, nó trả về nếu tham số mảng không phải là mảng .... –
Hãy làm cho nhận xét này là câu trả lời để người khác có thể nhận thấy vấn đề này được giải quyết. – EvAlex