Javascript 角度捕捉子范围ng单击或属性更改
我在表单元素上附加了一个指令,并在表单元素的不同子范围内嵌套了各种ng click事件(例如ng if、ng repeat) 我希望form指令能够监视和拦截任何ng单击,但似乎无法以通用方式连接到事件或子范围属性 演示: htmlJavascript 角度捕捉子范围ng单击或属性更改,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我在表单元素上附加了一个指令,并在表单元素的不同子范围内嵌套了各种ng click事件(例如ng if、ng repeat) 我希望form指令能够监视和拦截任何ng单击,但似乎无法以通用方式连接到事件或子范围属性 演示: html <body ng-controller="MainCtrl"> <form my-form-directive> <div ng-controller="SubCtrl"> <a ng-c
<body ng-controller="MainCtrl">
<form my-form-directive>
<div ng-controller="SubCtrl">
<a ng-click="changeName()">click me</a>
</div>
</form>
</body>
任何帮助都将不胜感激,
谢谢。你需要做几件事才能让这一切顺利进行 首先,我添加了jQuery以使用
find
函数
接下来,我们需要在SubCtrl
控制器中移动指令
HTML
<body ng-controller="MainCtrl">
<div ng-controller="SubCtrl">
<form my-form-directive name="name">
<a ng-click="changeName()">click me</a>
</form>
</div>
</body>
<form my-form-directive name="name">
JS
scope: { name: '=' },
element.find('[ng-click]').on('click', function(){
console.log($scope.name);
});
$scope.$watch(
function(){ return $scope.name; },
function(){ console.log($scope.name); }
);
最后,在指令中,使用ng click
收听所有元素,并在单击时触发click
事件
JS
scope: { name: '=' },
element.find('[ng-click]').on('click', function(){
console.log($scope.name);
});
$scope.$watch(
function(){ return $scope.name; },
function(){ console.log($scope.name); }
);
例如:
如果需要纯角度解决方案,可以在指令$scope.name
JS
scope: { name: '=' },
element.find('[ng-click]').on('click', function(){
console.log($scope.name);
});
$scope.$watch(
function(){ return $scope.name; },
function(){ console.log($scope.name); }
);
示例:为什么
*[ng click]
而不是[ng click]
?谢谢,[ng click]
也会起作用,可能更有效。更新的solutionelement.find()仅适用于包含jQuery的选择器。有效,但不是“仅角度”解决方案*[ng click]捕捉数据ng click等@JoeEnzminger。是的,你说得对。我忘了提到我添加了jQuery。更新您的目标是实现什么功能?如中所示,您为什么希望能够拦截任何ng点击?