2016-08-13 162 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; 
    }); 
}; 

我如何调用F在我的控制器中定义的功能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 
    };