मेरे पास एक फार्म निर्देश है जो callback
एक अलग गुंजाइश के साथ एक निर्दिष्ट विशेषता का उपयोग करता है :
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]) );
लेकिन मुझे नहीं लगता कि यह विशेष रूप से साफ-सुथरा है और इसमें अतिरिक्त सामान को अलग-अलग दायरे में रखना शामिल है।
क्या कोई बेहतर तरीका है?
प्लंकर खेल का मैदान यहाँ (कंसोल खुला है)।
ng
उदाहरण के लिए एपीआई के अनुरूप ng-click="someFunction()"
है एक अभिव्यक्ति है जो एक फ़ंक्शन को निष्पादित करने के लिए मूल्यांकन करता है।
$scope.callback
की callback="someFunction"
विशेषता और scope: { callback: '=' }
संपत्ति द्वारा सेट किया गया है । बाद की तारीख में बुलाया जाने $scope.callback
वाला एक कार्य है। वास्तविक विशेषता मान स्पष्ट रूप से एक स्ट्रिंग है - यह हमेशा HTML के साथ होता है।