क्या एम्बर में प्रत्येक इटरेटर के लिए तोड़ने का कोई तरीका है?एम्बरजेएस: क्या यह हर किसी के लिए तोड़ना संभव है?
मैंने कॉलबैक (एक ला jQuery) में झूठी वापसी करने की कोशिश की लेकिन यह काम नहीं करता है।
धन्यवाद! पीजे
क्या एम्बर में प्रत्येक इटरेटर के लिए तोड़ने का कोई तरीका है?एम्बरजेएस: क्या यह हर किसी के लिए तोड़ना संभव है?
मैंने कॉलबैक (एक ला jQuery) में झूठी वापसी करने की कोशिश की लेकिन यह काम नहीं करता है।
धन्यवाद! पीजे
एम्बर मूल Array.prototype.forEach
का उपयोग करता है यदि यह उपलब्ध है, और यदि नहीं है तो इसे अनुकरण करता है। https://github.com/emberjs/ember.js/blob/v1.0.0-rc.1/packages/ember-metal/lib/array.js#L45 देखें।
जावास्क्रिप्ट forEach
तोड़ने का समर्थन नहीं करता है। देखें https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/forEach
नहीं, मैं foreach कोड को देखकर, सीएफआर जेम्स नहीं सोचता, आप देख सकते हैं कि यह हुड के नीचे लूप का उपयोग करता है। आप एक अपवाद फेंक सकते हैं, लेकिन यह स्पैगेटी कोड लिखना पसंद है। लेकिन यह संभव हो सकता है, आप github पर एक सुविधा अनुरोध कर सकते हैं? या अपने स्वयं के कार्यान्वयन को लिखें जो लूप के लिए टूटता है।
आप Array#some
या Array#every
[1,2,3].some(function(element) {
return true; // Break the loop
});
[1,2,3].every(function(element) {
return false; // Break the loop
});
अधिक जानकारियां here
उपयोग Array#find का उपयोग करें और सही लौट लूप से बाहर तोड़ने के लिए कर सकते हैं।
toArray
का उपयोग कर संभावित रूप से सरणी के क्रम को हटा सकते हैं, जो इस उद्देश्य को हरा देता है। आप लूप के लिए सामान्य का उपयोग कर सकते हैं लेकिन इसे आपके लिए काम करने के लिए 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;
}
}
यह आपको एक निश्चित सूचकांक में शुरू करने के लिए अनुमति देने के अतिरिक्त लाभ है, तो आप कर सकते हैं मदों की सबसे छोटी संख्या के माध्यम से लूप।
धन्यवाद जेम्स और सब। मुझे लगता है कि मैं समय के लिए()) और jQuery iterator का उपयोग करने के लिए होगा। – PJC