AngularJSでスコープを分離せずにディレクティブからコントローラー関数を呼び出す
分離スコープを使用せずに、ディレクティブ内から親スコープの関数を呼び出す方法を見つけることができないようです。分離スコープを使用する場合、分離で "&"を使用して親スコープの関数にアクセスできることを知っていますが、必要がないときに分離スコープを使用すると影響があります。次のHTMLについて考えてみます。 <button ng-hide="hideButton()" confirm="Are you sure?" confirm-action="doIt()">Do It</button> この簡単な例では、JavaScriptの確認ダイアログを表示し、確認ダイアログで[OK]をクリックした場合にのみdoIt()を呼び出します。これは、分離されたスコープを使用して簡単です。ディレクティブは次のようになります。 .directive('confirm', function () { return { restrict: 'A', scope: { confirm: '@', confirmAction: '&' }, link: function (scope, element, attrs) { element.bind('click', function (e) { if (confirm(scope.confirm)) { scope.confirmAction(); } }); } }; }) しかし問題は、私が分離スコープを使用しているため、上の例のng-hideは親スコープに対して実行されず、分離スコープで実行されることです(ディレクティブで分離スコープを使用すると、その要素のすべてのディレクティブが分離スコープを使用します)。以下は、 ng-hideが機能しない上記の例のjsFiddleです。(このフィドルでは、入力ボックスに「yes」と入力すると、ボタンが非表示になることに注意してください。) 代わりに、分離されたスコープを使用しないこともできます。これは、このディレクティブのスコープを分離する必要がないため、実際にここで本当に必要なものです。私が持っている唯一の問題は、分離されたスコープに渡さない場合、親スコープのメソッドをどのように呼び出すのですか? これは、孤立スコープを使用していないng-hideのjsfiddleですが、もちろん ng-hideは正常に動作していますが、confirmAction()の呼び出しは機能せず、動作させる方法がわかりません。 注意してください、私が本当に探している答えは、分離されたスコープを使用せずに外部スコープの関数を呼び出す方法です。また、この確認のポイントは、外部スコープを呼び出す方法を理解し、それでも他のディレクティブを親スコープに対して機能させることができるためです。 …