2016-03-22 7 views
1

親コントローラで定義されたメソッドを呼び出すディレクティブを作成しようとしています。ControllerAs親との1.xディレクティブ共有スコープ

I've made a plnkr here

私は、親コントローラのための 'VM' としてのコントローラを使用しています。このメソッドはディレクティブでは呼び出されません。どのように私は指示から親のコントローラのメソッドを呼び出すことができますか?

(function() { 
    var myApp = angular.module('myApp', []); 

    myApp.controller('MyCtrl', MyCtrl); 

    MyCtrl.$inject = []; 

    function MyCtrl() { 
    this.title = 'Test'; 

    this.sayHello =() => { 
     this.output = 'Hello'; 
    } 

    } 

    myApp.directive('sayHello', function() { 
    return { 
     restrict: 'E', 
     replace: true, 
     template: '<a href="#" ng-click="vm.sayHello();">Click to say hello</a>' 
    } 
    }) 
})(); 
+0

私はあなたのplunkrをテストし、これは親関数を呼び出しません。 – Aliz

+0

あなたはHelloの出力を得ると言っていますか?私はそうではないので – AlxVallejo

+0

もちろん出力がないので、 "output"の値を "Hello"に変更し、 "console.log"または "alert()"を使用すると、あなたの関数が呼ばれていることがわかります参照:https://plnkr.co/edit/3S5bglFxi0ifsx6uyMJT?p=preview – Aliz

答えて

1

私は、コードを変更し、今その作業ました:

<!DOCTYPE html> 
<html> 
    <head> 
    <script data-require="[email protected]" data-semver="1.4.9" src="https://code.angularjs.org/1.4.9/angular.js"></script> 
    <link rel="stylesheet" href="style.css" /> 
    <script src="script.js"></script> 
    </head> 

    <body> 
    <div ng-app="myApp"> 
     <div ng-controller="MyCtrl as vm"> 
     <h3>{{vm.title}}</h3> 
     <say-hello></say-hello> 

     <h4>{{vm.output}}</h4> 
     </div> 
    </div> 
    </body> 

</html> 
関連する問題