2013-02-25 36 views

Trả lời

7

Ember sử dụng số gốc Array.prototype.forEach nếu có, và mô phỏng nó nếu không. Xem https://github.com/emberjs/ember.js/blob/v1.0.0-rc.1/packages/ember-metal/lib/array.js#L45.

JavaScript forEach không hỗ trợ vi phạm. Xem https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/forEach

+0

Cảm ơn James và tất cả. Tôi đoán tôi sẽ toArray() và sử dụng jQuery iterator thay vì trong thời gian này. – PJC

0

Không, tôi không nghĩ như vậy cfr James, nhìn vào mã foreach, bạn có thể thấy rằng nó sử dụng vòng lặp for dưới mui xe. Bạn có thể ném một ngoại lệ, nhưng điều đó giống như viết mã spagetti. Nhưng nó có thể là có thể, bạn có thể làm một yêu cầu tính năng tại github? Hoặc viết thực hiện của riêng bạn mà phá vỡ trong vòng lặp for.

12

Bạn có thể sử dụng Array#some hoặc Array#every

[1,2,3].some(function(element) { 
    return true; // Break the loop 
}); 

[1,2,3].every(function(element) { 
    return false; // Break the loop 
}); 

Mọi thông tin here

0

Sử dụng toArray có khả năng có thể xóa thứ tự của mảng, loại đánh bại mục đích. Bạn có thể sử dụng bình thường cho vòng lặp nhưng sử dụng objectAt để làm cho nó hoạt động cho bạn.

var emberArray = [ ... Array of Ember objects ... ], 
    min = 3, 
    max = emberArray.get('length'), 
    targetObject; 

for(var i = min; i < max; i++){ 
    targetObject = emberArray.objectAt(i); 

    if(targetObject.get('breakHere')) { 
     break; 
    } 
} 

Điều này có lợi ích bổ sung là cho phép bạn bắt đầu ở một chỉ mục nhất định, vì vậy bạn có thể lặp lại số lượng mục nhỏ nhất.

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