2016-08-13 3 views
0

HTMLAngularJS - вызов функции контроллера из директивы

angular.element(document.querySelector('#dateControls')).append($compile("<search-date></search-date>")($scope)); 

Директива

myApp.directive('searchDate', function ($compile, $rootScope,$timeout) { 
    var linker = function (scope, element, attrs) { 

      var template = '<button class="btn btn-default" ng-click="dateSearch() id="playbackSearch" search-date">Search</button>'; 

      element.html(template); 
      $compile(element.contents())(scope); 

    }; 
    return { 
     restrict: "EA", 
     replace: true, 
     link: linker 
    }; 
}); 

Контроллер

$scope.dateSearch = function(){ 

    scope.userId = 1; 
    myModuleService.getData(userId) //call service 
    then(function (data) { 
    console.log(data); 

    }).catch(function (error) { 
     throw error; 
    }); 
}; 

Как я могу позвонить п unction dateSearch(), определенный в моем контроллере?

ответ

1

Вы можете добавить контроллер в директиве itself.Since вашей myModuleService является внешней службы

нравится

controller:function($scope,myModuleService) 
{ 

$scope.dateSearch = function(){ 

    scope.userId = 1; 
    myModuleService.getData(userId) //call service 
    then(function (data) { 
    console.log(data); 

    }).catch(function (error) { 
     throw error; 
    }); 
}; 

} 

или в стиле

var controll:function($scope,myModuleService) 
    { 

    $scope.dateSearch = function(){ 

     scope.userId = 1; 
     myModuleService.getData(userId) //call service 
     then(function (data) { 
     console.log(data); 

     }).catch(function (error) { 
      throw error; 
     }); 
    }; 

    } 
return { 
     restrict: "EA", 
     replace: true, 
     link: linker, 
     controller:controll 
    }; 
Смежные вопросы