2017-11-24 10 views
0

私は "student"という名前のディレクティブを持っていますが、ディレクティブ内のメソッドにアクセスすることができないという問題があります。たとえば、コントローラのメソッドsetTextを呼び出す必要があります。角型js - コントローラ内でディレクティブメソッドを呼び出す方法は?

angular.module('sampleApp') 
     .directive('student', ['appConfig', '$filter', function(appConfig, $filter) { 
      var template = appConfig.DIRECTIVE_BASE_URL +'/demo/student.html'; 

      return { 
      restrict: 'E', 
      replace: true, 
      controller: ['$scope', function($scope) { 

       $scope.setText = function(a){ 
       if(a.type === 'manual'){ 
        return 'Manually Placed'; 
       } else { 
        return ''; 
       } 
       }; 
      }], 
      scope: { 
       studentData: '=', 
       studentName: '=' 
      }, 
      templateUrl: template 
      }; 

     }]); 
+0

したがって、student指令で 'return'の前に' setText'を呼び出したいのですか? – IzumiSy

+0

それは返すことができる、ちょうど私はコントローラのメソッドを呼び出す方法を知りたい – VSP

答えて

0

student指示の中にsetTextを定義することができます。

angular.module('sampleApp') 
     .directive('student', ['appConfig', '$filter', function(appConfig, $filter) { 
     var template = appConfig.DIRECTIVE_BASE_URL +'/demo/student.html'; 

     const setText = function(a) { 
      if(a.type === 'manual') { 
      return 'Manually Placed'; 
      } else { 
      return ''; 
      } 
     }; 

     return { 
      restrict: 'E', 
      replace: true, 
      controller: ['$scope', function($scope) { 
      $scope.setText = setText; 
      }], 
      scope: { 
      studentData: '=', 
      studentName: '=' 
      }, 
      templateUrl: template 
     }; 
     }]); 
+0

ディレクティブに大きな変更を加えることなくメソッドを呼び出す方法はありますか? – VSP

+0

また、 'setText'をディレクティブの外に移動することもできます。これは、ディレクティブ固有のデータを操作しないためです。私はあなたが言った大きな変化が何を意味するのか分かりませんが、これは指令の行を減らします。 – IzumiSy

関連する問題