Javascript 当单击页面上的任意位置时,如何调用AngularJS指令的函数?
我想在单击页面中的任意位置时调用close()函数,但不起作用。我写的是:Javascript 当单击页面上的任意位置时,如何调用AngularJS指令的函数?,javascript,jquery,angularjs,angularjs-directive,Javascript,Jquery,Angularjs,Angularjs Directive,我想在单击页面中的任意位置时调用close()函数,但不起作用。我写的是: var liveSearch = function () { return { restrict: "A", scope: { myData: '=', ngModel: '=' }, templateUrl: "/js/app/common/template/livesearch.html", link: function ($scope, ele
var liveSearch = function () {
return {
restrict: "A",
scope: {
myData: '=',
ngModel: '='
},
templateUrl: "/js/app/common/template/livesearch.html",
link: function ($scope, element, attrs) {
var close = function() {
$scope.status = "close";
};
$scope.open = function () {
$scope.status = "open";
};
$(document).on('click',function(){
close();
});
}
};
app.directive("liveSearch", liveSearch);
请帮忙解决这个问题
已编辑
<div live-search my-data="data" ng-model="typeId" ></div>
您可以在
链接中编写单击处理程序
link:function($scope, element, attrs)){
$scope.close = function(){
// Rest of the code
}
$('body').on('click',function(event){
$scope.close();
})
}
尝试使用此ClickWhere指令检测DOM对象之外的任何位置的单击
directive('clickElsewhere', function($parse, $rootScope) {
return {
restrict: 'A',
compile: function($element, attr) {
var fn;
fn = $parse(attr['clickElsewhere']);
return function(scope, element) {
var offEvent;
offEvent = $rootScope.$on('click', function(event, target) {
if (element.find($(target)).length || element.is($(target))) {
return;
}
return scope.$apply(function() {
return fn(scope);
});
});
return scope.$on('$destroy', offEvent);
};
}
};
});
您可以在模板中这样使用它:
<div live-search my-data="data" ng-model="typeId" click-else-where="close()"></div>
您能分享一下您是如何使用此指令的吗?请查看编辑部分It work only textbox keydown事件,而不是click事件。此指令是为实时搜索创建的,当我尝试在textbox close()函数调用中键入搜索任何内容时。提供的指令在单击时工作-正如您的问题及其代码$rootScope.$on('click',…