是否可以从外部调用directive
控制器内部定义的方法。
<div ng-controller="MyCtrl">
<map></map>
<button ng-click="updateMap()">call updateMap()</button>
</div>
app.directive('map', function() {
return {
restrict: 'E',
replace: true,
template: '<div></div>',
controller: function(){
$scope.updateMap = function(){
//ajax call here.
}
},
link: function($scope, element, attrs) {
$scope.updateMap();
//do some dom transformation
}
}
});
我想从我的观点调用方法
updateMap()
函数。 最佳答案
如果在控制器而不是作用域上公开该功能,则可以在父作用域上公开该控制器,例如:
controller: function($scope, $element, $attrs){
// Verify this. The controller has to be added to the parent scope, if the directive itself is creating a scope
$scope.$parent[$attrs["name"]]=this;
this.updateMap = function(){
//ajax call here.
}
},
现在,在主控制器中,您将可以访问控制器:
<button ng-click="myMap.updateMap()">call updateMap()</button>
这类似于
ng-model
公开其控制器的方式。将控制器视为指令的API。