2013-08-23 43 views
21

Tôi có JSON đối tượng như dưới đâyAngular JS - angular.forEach - Cách lấy chìa khóa của đối tượng?

{ 
    "txt_inc_Application": { 
     "EWS": true, 
     "EWindow": true 
    }, 
    "txt_inc_IncidentType": { 
     "Brand Damage": true, 
     "Internal failure": true 
    } 
} 

Và tôi đang sử dụng angular.forEach để có được những giá trị

$scope.filterFormula=function() { 
    angular.forEach($scope.filters, function(filterObj , filterIndex) { 
     angular.forEach(filterObj, function(value , key) { 
      console.log(value+"--"+key) 
     }) 
    }) 
} 

Làm thế nào tôi có thể nhận được "txt_inc_Application" và "txt_inc_IncidentType" trong vòng lặp?

Ngoài ra khi gọi hàm góc trong html như dưới đây, tại sao nó được thực hiện hai lần?

{{filterFormula()}} 

enter image description here

+0

thử $ scope.filterFormula = function() { angular.forEach ($ scope.filters, function (filterObj, filterIndex) { angular.forEach (filterObj, hàm (giá trị, khóa) { console.log (filterIndex) }) }) } – TyrHunter

+1

Các ràng buộc được gọi ít nhất một lần cho mỗi chu kỳ áp dụng. AngularJS tiếp tục kiểm tra tất cả các ràng buộc cho đến khi không có gì thay đổi trong một chu kỳ. Vì vậy, nếu nó kiểm tra 'filterFormula', và một cái gì đó trong mô hình thay đổi trong cùng một chu kỳ, nó sẽ được gọi lại! Và một lần nữa! Và một lần nữa! Tối đa 10 lần cho đến khi bạn nhận được lỗi '10 $ lần lặp lại đã đạt đến'. –

+0

Cảm ơn. Tôi ngớ ngẩn quá. Tôi không biết tại sao tôi bỏ qua điều đó. Ngoài ra bất kỳ ý tưởng tại sao chức năng filterFormula được thực hiện hai lần? Tôi có thể thấy giao diện điều khiển .log được in hai lần. – Saravanan

Trả lời

46

Tham số đầu tiên đến iterator trong forEach là giá trị nhất và thứ hai là chìa khóa của đối tượng.

angular.forEach(objectToIterate, function(value, key) { 
    /* do something for all key: value pairs */ 
}); 

Trong ví dụ của bạn, foreach bên ngoài thực sự là:

angular.forEach($scope.filters, function(filterObj , filterKey) 
2
var obj = {name: 'Krishna', gender: 'male'}; 
angular.forEach(obj, function(value, key) { 
    console.log(key + ': ' + value); 
}); 

mang lại các thuộc tính của obj với giá trị tương ứng của họ:

name: Krishna 
gender: male 
+2

Cũng cung cấp giải thích cho mã. –

+4

Chào mừng bạn đến với Stack Overflow! Trong khi đoạn mã này được chào đón, và có thể cung cấp một số trợ giúp, nó sẽ được [cải thiện rất nhiều nếu nó bao gồm một lời giải thích] (// meta.stackexchange.com/q/114762) của * how * và * why * this giải quyết vấn đề . Hãy nhớ rằng bạn đang trả lời câu hỏi cho độc giả trong tương lai, không chỉ là người hỏi ngay bây giờ! Vui lòng [sửa] câu trả lời của bạn để thêm giải thích và đưa ra chỉ dẫn về những giới hạn và giả định được áp dụng. –

Các vấn đề liên quan