0
のindex.htmlのディレクティブでcontrollerAsで作業されていないのはなぜ孤立スコープ "&" angularJs
<div ng-app="phoneApp">
<div ng-controller="ctrl as AppCtrl">
<div phone dial="ctrl.callHome('called home!')"></div>
</div>
</div>
app.js:
var app = angular.module('phoneApp', []);
app.controller("AppCtrl", function ($scope) {
var ctrl = this;
ctrl.callHome = function (message) {
alert(message);
};
});
app.directive("phone", function() {
return {
scope: {},
bindToController : {
dial: "&"
},
controller : controller,
controllerAs : 'controllerVM',
templateUrl : 'node.html'
};
function controller(){
controllerVM.onClick = function(){
controllerVM.dial();
}
}
});
node.html:
<button ng-click="controllerVM.onClick()">Button</button>
私は電話ディレクティブのButtonをクリックすると、AppCtrlのcallHome関数を呼び出す必要がありますが、呼び出されていません。私はどこのすべてからcontrollerAsを削除し、直接テンプレートから指示ダイヤル関数を呼び出すと
、それが正常に動作している
だから私は行方不明です何私を助けてください?
ありがとうございます。
感謝。もう1つの質問にお答えください。 上記のコードはうまくいきますが、コールバック関数の中でダイヤル関数を呼び出すときに問題ありません。それは動作していません。私の電話指令では、httpリクエストを作成しています。成功したら、httpリクエストのコールバックの中でダイヤル機能を呼び出して、AppCtrlコントローラに通知しています。 – rkrock
エラーが見つかりました。私はcontrollerVM.dial(id)のようなデータを渡していましたが、controllerVM.dial({id:id})として渡す必要があります。 – rkrock