2017-09-13 13 views
0

controller1のボタンのオンクリック、controller2の機能の呼び出しが必要です。 私はサービスを使ってみましたが、運はありません。コントローラ1のボタンのオンクリック、コントローラ2からの機能の実行

plunkrのコードを確認してください。

提案がありますか?

+0

のようにそれを行うことができます。https://plnkr.co/edit/bkD1iR3LBk2pAayQ7wCe ?p = preview –

答えて

1

サービスを使用する代わりに、broadcastを使用して別のコントローラからメソッドを呼び出します。

.controller('ctrl', [ 
     '$scope', 'svc', 
     function($scope, svc) { 
      $scope.fun = function() { 
       $scope.$emit('sampleEvent') 
      } 
     } 
    ]) 
    .controller('ctrl1', [ 
     '$scope', 'svc', '$rootScope', 
     function($scope, svc, $rootScope) { 
      $rootScope.$on('sampleEvent', function(ev) { 
       $scope.fun2() 
      }) 
      $scope.fun2 = function() { 
       alert("hi"); 
      } 
     } 
    ]); 

Demo

+0

はい、感謝しました –

1

は、あなたが本当にサービスでそれをしたいだけでなく場合は、コードチェックplunkrのために、この

(function() { 
     angular.module('app', []) 
      .service('svc', function() { 
       var svc = {}; 

       svc.method = function() { 
        // And here you can call it 
        svc.fun2(); 
        //on click from first controller it should open a alert box saying "hi" 

       } 
       return svc; 
      }) 
      .controller('ctrl', [ 
       '$scope', 'svc', function($scope, svc) { 
        $scope.fun = function(){ 
        svc.method(); 
        } 
       } 
      ]) 
      .controller('ctrl1', [ 
       '$scope', 'svc', function($scope, svc) { 

        $scope.fun2 = function(){ 
         alert("hi"); 
        } 

        // inject your method to your service here when method is defined 
        svc.fun2 = $scope.fun2; 
       } 
      ]); 
    })(); 
+0

はいそれは期待通りに動作します.. –

関連する問題