ฉันได้ลองค้นหาทุกที่แม้แต่ในเอกสารAngular.orgแต่ไม่พบคำอธิบายโดยละเอียดเกี่ยวกับการใช้งาน มันจะมีประโยชน์อย่างมากถ้ามีใครสามารถอธิบายได้
ฉันได้ลองค้นหาทุกที่แม้แต่ในเอกสารAngular.orgแต่ไม่พบคำอธิบายโดยละเอียดเกี่ยวกับการใช้งาน มันจะมีประโยชน์อย่างมากถ้ามีใครสามารถอธิบายได้
คำตอบ:
angular.noop เป็นฟังก์ชันว่างที่สามารถใช้เป็นตัวยึดเมื่อคุณต้องการส่งผ่านฟังก์ชันบางอย่างเป็นพารามิเตอร์
function foo (callback) {
// Do a lot of complex things
callback();
}
// Those two have the same effect, but the later is more elegant
foo(function() {});
foo(angular.noop);
noop
แทนที่จะปล่อยให้ฟังก์ชันว่างคืออะไร? สุนทรียภาพการแสดงหรืออย่างอื่น?
angular.noop
เนื่องจากคุณใช้ฟังก์ชันว่างเดิมซ้ำอยู่เสมอ (แทนที่จะประกาศฟังก์ชันใหม่ที่ไม่ระบุตัวตนทุกครั้ง) ผลการดำเนินงานที่ชาญฉลาดก็จะทำให้แตกต่างเป็นรหัสไม่มีเป็นเพียงฟังก์ชั่นที่ว่างเปล่าชื่อangular.noop
noop
ฉันพบว่ามีประโยชน์อย่างมากเมื่อเขียนฟังก์ชันที่คาดว่าจะมีการโทรกลับ
ตัวอย่าง:
function myFunction(id, value, callback) {
// some logic
return callback(someData);
}
ฟังก์ชันด้านบนจะส่งคืนข้อผิดพลาดเมื่อถูกเรียกโดยไม่ระบุอาร์กิวเมนต์ที่สาม myFunction(1, 'a');
ตัวอย่าง (โดยใช้angular.noop
):
function myFunction(id, value, callback) {
var cb = callback || angular.noop; // if no `callback` provided, don't break :)
// some logic
return cb(someData);
}
typeof callback === 'function' && callback();
. ดีงามมากขึ้น ^^. ไม่ใช้angular.noop
แม้ว่า
เป็นฟังก์ชันที่ไม่มีการดำเนินการใด ๆ สิ่งนี้มีประโยชน์ในสถานการณ์เช่นนี้:
function foo(y) {
var x= fn();
(y|| angular.noop)(x);
}
จะมีประโยชน์เมื่อเขียนโค้ดในรูปแบบฟังก์ชัน
//do nothing on the success callback, hence replacing the success callbck function with angular.noop()
$ scope.contacts = Contacts.query (angular.noop, function (response) {Window.myresp = response; $ scope.displayError (response); console.log ("bad boy, listContacts failed ");});
* คำตอบนี้ถือว่าคุณไม่ใช่ผู้เริ่มต้นในเชิงมุม
Angular.noop เป็นฟังก์ชันว่างที่สามารถใช้เป็นตัวยึดได้ในบางกรณี
ตัวอย่างเช่น:
ลองนึกภาพว่าคุณกำลังใช้ q.all ซึ่งทำการเรียกหลายครั้งไปยัง api และส่งคืนคำสัญญาเดียว หากการโทรเหล่านี้บางสายล้มเหลว แต่คุณยังคงต้องจัดการกับสายที่ไม่ล้มเหลวให้ใช้ noop เชิงมุมเป็นตัวเรียกกลับไปยังการโทร api เมื่อคุณรับสาย หากคุณไม่ใช้ noop เชิงมุม q.all จะปฏิเสธทุกสิ่งหากการโทรล้มเหลว
Q.all (somecall.catch (angular.noop), anothercall) จากนั้น (แก้ไขผลลัพธ์ [0] และผลลัพธ์ [1])
หากการโทรล้มเหลว Angular จะเพิกเฉยและทำการโทรอีกครั้ง (แต่คุณจะยังคงไม่ได้กำหนดไว้สำหรับผลลัพธ์ที่แก้ไขครั้งแรก)
ฉันหวังว่าฉันจะช่วย
var result = (callback || angular.noop)(params)
วิธีที่สั้นที่สุดในการทำ
var result = typeof callback === 'function' && callback(params);
โดยคำนึงว่า callback var จะเป็นฟังก์ชัน
เคล็ดลับ: คุณสามารถใช้เพื่อเพิ่ม ternary ให้กับng-click
แอตทริบิวต์:
ng-click="(variable) ? doSomething() : angular.noop()"
จนกระทั่งฉันพบว่าคุณสามารถใช้ ng-click = "variable && doSomething ()" `
ng-click="(variable) ? doSomething() : true"
ก็ใช้ได้เช่นกัน