2016-11-26 4 views
1

Как в контроллере я могу вызвать функцию clearCopy из директивы?Как вызвать функцию из директивы в контроллере? AngularJS

Это часть моей HTML:

<tr ng-form="mForm" my-directive> 
    <td> 
    <div> 
     <button class="btn btn-default" ng-click="saveData(row)"> </button> 
    </div> 
    </td> 
</tr> 

Это моя директива:

angular.module("w.forms").directive("myDirective", function() { 
    return { 
     require: ["^form"], 
     link: function (scope, element, attrs, ctrls) { 
      scope.$watch(function() { 
      // ...... something 
      }, true); 

      scope.clearCopy = function() { 
       // do something 
      } 
     } 
    }; 
}); 

Это мой контроллер:

angular.module("app").controller("datalesController", function ($scope) { 
    $scope.saveData(row) = function { 
    // do something then run function from directive 
    // till this part everything works fine 
    $scope.clearCopy() // unfortunately it doesn't work :(
    } 
} 

Все работает отлично, за исключением функции $scope.clearCopy() в контроллер не работает.

+0

http://stackoverflow.com/questions/16881478/how-to-call-a-method-defined-in-an-angularjs- директива может пролить некоторый свет. – Jason

+0

Ваш модуль директивы и модуль контроллера отличаются. –

ответ

-2

HTML

<html> 
<script src="library/angular.min.js"></script> 
<script src="practice.js"></script> 
<head> 
</head> 
<body ng-app="app" ng-controller="datalesController"> 
    <div my-directive> 
     <button ng-click="saveData()">press </button> 
    </div> 
</body> 
</html> 

Контроллер

angular.module('app',[]).controller("datalesController", function ($scope) { 
    $scope.saveData = function() { 
    // do something then run function from directive 
    // till this part everything works fine 
    $scope.clearCopy(); // unfortunately it doesn't work :(
    }; 
}); 

Директива

angular.module('app',[]).directive("myDirective" , function() { 
    return { 
     restrict:'A', 
     link: function (scope, element, attrs, ctrls) { 
      scope.clearCopy = function() { 
       console.log("calling from controller"); 
      }; 
     } 
    }; 
}); 

я изменить код для запуска вашего запроса

+0

Вы изменили модуль. Это не solutin – DiPix

+0

Я изменил модуль, потому что существует другой модуль, «w.forms» и «app». в дополнение к вам не указано ограничение: «А» в вашей директиве и функция saveData определена неверно. – shahab

+0

В этом смысл – DiPix

 Смежные вопросы

  • Нет связанных вопросов^_^