gpt4 book ai didi

javascript - 单击页面任意位置时如何调用 AngularJS 指令的函数?

转载 作者:行者123 更新时间:2023-11-27 22:57:35 25 4
gpt4 key购买 nike

我想在单击页面中的任意位置时调用 close() 函数,但没有成功。我写的是这样的:

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>

最佳答案

尝试使用此 clickElsewhere 指令来检测 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>

关于javascript - 单击页面任意位置时如何调用 AngularJS 指令的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37455586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com