Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 添加自定义复选框指令(具有隔离范围)后,angular内置指令不起作用_Javascript_Angularjs_Angularjs Scope - Fatal编程技术网

Javascript 添加自定义复选框指令(具有隔离范围)后,angular内置指令不起作用

Javascript 添加自定义复选框指令(具有隔离范围)后,angular内置指令不起作用,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我试图在Angular中创建一个自定义的checkbox指令,我已经成功地做到了。但问题是没有调用内置的ng click。如果删除了自定义指令,ng单击效果良好。我想这与范围有关,我仍然缺乏了解。谁能帮帮我吗 代码在这里 这是因为您有一个具有独立作用域的指令,请尝试以下操作: <div checkbox="p.checked" ng-click="$parent.test()">test</div> 测试 那就行了。 希望这能有所帮助。虽然@Yahya的答案会起作用,

我试图在Angular中创建一个自定义的checkbox指令,我已经成功地做到了。但问题是没有调用内置的
ng click
。如果删除了自定义指令,
ng单击
效果良好。我想这与范围有关,我仍然缺乏了解。谁能帮帮我吗

代码在这里


这是因为您有一个具有独立作用域的指令,请尝试以下操作:

<div checkbox="p.checked" ng-click="$parent.test()">test</div>
测试
那就行了。

希望这能有所帮助。

虽然@Yahya的答案会起作用,但不要使用
$parent
,如果HTML结构发生更改(即HTML更改可以更改范围的继承方式),这可能会导致中断,您应该在HTML属性中指定在单击元素时希望指令调用的方法/回调:

<div checkbox="p.checked" cb="test()">test</div>

这确实是一种更好的方法。实际上,我正在尝试这种方法,但由于我没有调用test(),所以无法使其工作,因为我接受了答案,所以投票赞成。谢谢分享。这应该是正确的答案。基本上,只要马克有什么反应,他就是对的。不要争论,只是同意并继续前进。:)
<div checkbox="p.checked" ng-click="$parent.test()">test</div>
<div checkbox="p.checked" cb="test()">test</div>
ele.bind('click', function(){
   ele.toggleClass('active');
   scope.cb();               // calls test()
   scope.$apply(function(){
     scope.value = ele.hasClass('active');
   });
});
...        
scope : {
   value: '=checkbox',
   cb: '&',
}