নির্দেশাবলীর মধ্যে যোগাযোগের বেশ কয়েকটি উপায় রয়েছে বলে মনে হয়। বলুন আপনার নেস্টেড নির্দেশিকা রয়েছে, যেখানে অভ্যন্তরীণ নির্দেশাবলীর অবশ্যই বাইরের সাথে কিছু যোগাযোগ করতে হবে (উদাহরণস্বরূপ এটি ব্যবহারকারী পছন্দ করেছেন)।
<outer>
<inner></inner>
<inner></inner>
</outer>
এখনও পর্যন্ত আমার এটি করার 5 টি উপায় রয়েছে
require: পিতামাতাদের নির্দেশ
innerডিরেক্টিভের প্রয়োজন হতে পারে outerনির্দেশক, যা তার নিয়ামক উপর কিছু পদ্ধতি প্রকাশ করতে পারে। সুতরাং innerসংজ্ঞা
require: '^outer',
link: function(scope, iElement, iAttrs, outerController) {
// This can be passed to ng-click in the template
$scope.chosen = function() {
outerController.chosen(something);
}
}
এবং outerনির্দেশকের নিয়ামকটিতে:
controller: function($scope) {
this.chosen = function(something) {
}
}
$emit ঘটনা
innerনির্দেশ করতে পারেন $emitএমন একটি ইভেন্টের, যা outerনির্দেশ কে উত্তর দিতে পারেন মাধ্যমে $on। সুতরাং innerনির্দেশকের নিয়ামক:
controller: function($scope) {
$scope.chosen = function() {
$scope.$emit('inner::chosen', something);
}
}
এবং outerনির্দেশাবলী নিয়ন্ত্রণে:
controller: function($scope) {
$scope.$on('inner::chosen, function(e, data) {
}
}
মাধ্যমে প্যারেন্ট স্কোপে এক্সপ্রেশন কার্যকর করুন &
আইটেমটি প্যারেন্ট স্কোপের একটি অভিব্যক্তিতে আবদ্ধ হতে পারে এবং এটি একটি উপযুক্ত সময়ে কার্যকর করতে পারে ute এইচটিএমএল এর মত হবে:
<outer>
<inner inner-choose="functionOnOuter(item)"></inner>
<inner inner-choose="functionOnOuter(item)"></inner>
</outer>
সুতরাং innerকন্ট্রোলারের একটি 'ইনারচুজ' ফাংশন রয়েছে এটি কল করতে পারে
scope: {
'innerChoose': '&'
},
controller: function() {
$scope.click = function() {
$scope.innerChoose({item:something});
}
}
যা এই ক্ষেত্রে outerনির্দেশের সুযোগে 'ফাংশন আউটআউটর' ফাংশনটি কল করবে :
controller: function($scope) {
$scope.functionOnOuter = function(item) {
}
}
বিচ্ছিন্ন সুযোগে সুযোগের উত্তরাধিকার
এই নেস্টেড কন্ট্রোলার হিসাবে প্রদত্ত, স্কোপ উত্তরাধিকার কাজ করতে পারে এবং অভ্যন্তরীণ নির্দেশিকা কেবল স্কোপ চেইনে যে কোনও ফাংশন কল করতে পারে, যতক্ষণ না এর কোনও বিচ্ছিন্ন সুযোগ নেই scope সুতরাং innerনির্দেশনায়:
// scope: anything but a hash {}
controller: function() {
$scope.click = function() {
$scope.functionOnOuter(something);
}
}
এবং outerনির্দেশে:
controller: function($scope) {
$scope.functionOnOuter = function(item) {
}
}
পরিষেবা দ্বারা অভ্যন্তরীণ এবং বাইরের উভয় মধ্যে ইনজেকশনের
কোনও পরিষেবা উভয় দিকনির্দেশেই ইনজেকশনের ব্যবস্থা করা যেতে পারে, যাতে তারা একই বস্তুটিতে সরাসরি অ্যাক্সেস করতে পারে, বা পরিষেবাটি অবহিত করার জন্য ফাংশনগুলি কল করতে পারে এবং এমনকি একটি পাব / সাব সিস্টেমে নিজেদের বিজ্ঞপ্তি হিসাবে নিবন্ধন করতে পারে। এর জন্য নির্দেশিকাগুলি নেস্ট করা দরকার হয় না।
প্রশ্ন : অন্যগুলির তুলনায় প্রত্যেকের কোনও সম্ভাব্য ত্রুটি এবং সুবিধা কী কী?