私の角形アプリケーションでは、アラートのリストを処理するalert-serviceがあります。次に、すべてのアラートをページにレンダリングするディレクティブを作成します。私は、UIのブートストラップコンポーネントを使用します。テンプレートでjs-callを使用したディレクティブ - メソッドが呼び出されない
しかし、警告の閉じるボタンは、メソッドを呼び出すことはありません。
.directive('someAlert', ['alertService', function (alertService){
var templateString = '<uib-alert ng-repeat="alert in vm.alerts" type="{{alert.type}}" close="closeAlert($index)">{{alert.msg}}</uib-alert>';
return {
restrict: 'E',
template: templateString,
scope: true,
controller: function(){
var vm = this;
vm.alerts = alertService.get();
vm.closeAlert = function (index) {
console.log('closeAlert within directive controller called');
alertService.closeAlertIdx(index);
}
},
controllerAs: 'vm',
replace: true
}
}]);
投稿する前にそのアイデアがありました。しかし、テンプレートのメソッドの前にcontrollerAsの名前を追加し、そのディレクティブを使用するビューのコントローラーにメソッドが宣言されていると、呼び出されることがわかりました。これは私が望んでいたものではありません。 – karlis
申し訳ありませんが、私は2番目の文を理解していません。あなたはそれを言い換えることができますか? – bert
OK、しよう: 'hello.html'ビューとこのビュー 'hello.controller.js'のコントローラがあるとします。我々は、例えば、 VM。このビューにalertディレクティブを追加し、alert-directiveのcontrollerAs名もvmであれば、ディレクティブ(vm.close ...)からの呼び出しはhello.controller.jsに行きます。私が望むもの(またはそれをどうするべきか) – karlis