ฉันมีคำสั่งแบบฟอร์มที่ใช้callback
คุณลักษณะที่ระบุกับขอบเขต isolate:
scope: { callback: '&' }
มันอยู่ภายในng-repeat
ดังนั้นการแสดงออกที่ฉันผ่านรวมถึงid
วัตถุที่เป็นข้อโต้แย้งกับฟังก์ชั่นการโทรกลับ:
<directive ng-repeat = "item in stuff" callback = "callback(item.id)"/>
เมื่อฉันทำตามคำสั่งเสร็จแล้วจะเรียกใช้$scope.callback()
จากฟังก์ชั่นควบคุม สำหรับกรณีส่วนใหญ่สิ่งนี้เป็นเรื่องปกติและทุกอย่างที่ฉันต้องการจะทำ แต่บางครั้งฉันก็ต้องการที่จะเพิ่มการโต้แย้งจากภายในdirective
ตัวเอง
มีการแสดงออกเชิงมุมที่จะช่วยให้นี้: $scope.callback(arg2)
ส่งผลให้callback
ถูกเรียกด้วยarguments = [item.id, arg2]
?
ถ้าไม่เป็นเช่นนั้นวิธีที่ประณีตที่สุดในการทำเช่นนี้คืออะไร?
ฉันพบว่าใช้งานได้:
<directive
ng-repeat = "item in stuff"
callback = "callback"
callback-arg="item.id"/>
กับ
scope { callback: '=', callbackArg: '=' }
และคำสั่งโทร
$scope.callback.apply(null, [$scope.callbackArg].concat([arg2, arg3]) );
แต่ฉันไม่คิดว่ามันประณีตโดยเฉพาะและเกี่ยวข้องกับการวางสิ่งพิเศษไว้ในขอบเขตไอโซเลท
มีวิธีที่ดีกว่า?
Plunker playground ที่นี่ (เปิดคอนโซล)
ng
API ตัวอย่างเช่นng-click="someFunction()"
นิพจน์ที่ประเมินว่าจะเรียกใช้ฟังก์ชัน
$scope.callback
ถูกกำหนดโดยcallback="someFunction"
คุณลักษณะและscope: { callback: '=' }
คุณสมบัติของวัตถุคำจำกัดความคำสั่ง $scope.callback
เป็นฟังก์ชันที่จะเรียกใช้ในภายหลัง ค่าแอททริบิวที่แท้จริงคือสตริง - ซึ่งเป็นกรณีที่มี HTML เสมอ