EmberJS:是否有可能打破forEach?

时间:2013-02-25 17:01:56

标签: ember.js

有没有办法打破Ember中的forEach迭代器?

我试图在回调中返回false(la jQuery),但它不起作用。

谢谢! PJ

5 个答案:

答案 0 :(得分:12)

您可以使用Array#someArray#every

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

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

更多信息here

答案 1 :(得分:7)

Ember使用原生Array.prototype.forEach(如果可用),如果没有则模仿它。请参阅https://github.com/emberjs/ember.js/blob/v1.0.0-rc.1/packages/ember-metal/lib/array.js#L45

JavaScript的forEach不支持破解。见https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/forEach

答案 2 :(得分:0)

不,我不这么认为cfr James,看着foreach代码,你可以看到它在引擎盖下使用了for循环。你可以抛出异常,但那就像编写spagetti代码一样。 但是有可能,你可以在github上做一个功能请求吗?或者编写自己的实现,在for循环中中断。

答案 3 :(得分:0)

使用Array#find并返回true以摆脱循环。

答案 4 :(得分:0)

使用toArray可能会删除数组的顺序,这会破坏目的。您可以使用普通for循环,但使用objectAt使其适合您。

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;
    }
}

这有一个额外的好处,允许你从某个索引开始,所以你可以遍历最小数量的项目。