2017-03-05 72 views
1

控制器頁面:如何調用AngularJS指令內部控制器功能

(function() { 
'use strict'; 
    angular.module('LVS').controller('LVSCtrl', LVSCtrl); 
    function LVSCtrl($scope) { 
    $scope.OnChange = function() { 
    // do 
    } 
    } 
})(); 

這是我的指令代碼 我的指令代碼:

(function() { 
    'use strict'; 

    angular.module('LVS') 
     .directive('taEmp', taEmp); 

    function taEmp() { 
     return { 
     restrict: 'E', 
     scope: { 
      ngModel: '=', 
      ngDisabled: '=', 
      ngReadonly: '=', 
      ngChange: '&', 
     }, 
     templateUrl: 'app/pages/ESS-TA/Common/Directives/TAEmpPicker.html', 

    } 

    })(); 

我在頁面指令:

<ta-emp ng-model="empCode" ng-change="OnChange()"></ta-emp> 

我的指令沒有調用函數在控制器

+0

請將您'TA-emp'指令。 – lin

+0

'我的指令不會在控制器中調用函數......只是猜測,但這可能是因爲您沒有任何指令代碼。 –

+0

我已經創建這個指令 –

回答

1

我把它用$watch您的指令內部和解析控制器功能PARAM到它的工作。一旦輸入值發生變化,函數就會被執行。

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

 
myApp.controller('MyCtrl', function ($scope) { 
 
    $scope.name = ''; 
 
    $scope.someFunction = function (data) { 
 
     console.log(data); 
 
    }; 
 
}); 
 

 
myApp.directive('myDirective', function() { 
 

 
    return { 
 
     restrict: 'E', 
 
     scope: { 
 
     model: '=ngModel', 
 
     function: '=' 
 
     }, 
 
     template: '<input type="text" ng-model="model" function="function" my-directive>', 
 
     link: function (scope, element, attrs) { 
 
     scope.$watch('model', function (newValue, oldValue) { 
 
      if (newValue && newValue !== oldValue) { 
 
      if (typeof scope.function === 'function') { 
 
       scope.function('test'); 
 
      } 
 
      } 
 
     }, true); 
 
     } 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="MyCtrl"> 
 
    <my-directive ng-model="name" function="someFunction"></my-directive> 
 
</div>

+0

謝謝,它的工作 –

+0

@AthitUpakan樂於幫助你! – lin

+0

why scope.function();在指令中也可以用參數調用函數嗎? ex。 $ scope.OnChange = function(data){// ....}); –

相關問題