我有一个简单的无序列表,其中填充了ng-repeat,我希望每次用户点击其中一个列表项时都会发生一些事情。但是,ng-click似乎不能与我的html中的任何div一起使用,它只适用于按钮。起初我认为问题在于ng-repeat,但事实证明,即使在ng-repeat ng-click之外也似乎不起作用。我也尝试过使用ng-mousedown,它似乎也没有用。
这是我的HTML:
<div class="noteItem" ng-mouseleave="btnShow = false" ng-mouseenter="btnShow = true" ng-click="alert('click');">
<li>
{{note.subject|removeHTML}}<a ng-show="btnShow" ng-click="deleteNote(note._id)"><i>DELETE</i></a>
</li>
</div>
我也试过在这个div之外包装另一个div但是它仍然没有用。我一直坚持这个问题大约一个小时了。
答案 0 :(得分:0)
您已在div中进行了ng-click,并且在<a>
元素中,正在执行的元素位于<a>
元素中,而不是div中的ng-click。
尝试添加这样的div并尝试点击。
<div ng-click="yourScopeMethodHere()">click me</div>
BTW,在ng-click中直接调用JS alert()将无效。
答案 1 :(得分:0)
当执行ng click时,它会查找范围函数和表达式。警报和控制台都没有记录,所以它不会像这样执行。您可以做的是创建一个范围函数并在该函数内调用警报。
答案 2 :(得分:0)
由于父元素(ng-click
)上也有<div>
,因此点击将触发。您可以使用ng-click
$event.stopPropagation()
。
<div ng-mouseleave="btnShow = false" ng-mouseenter="btnShow = true" ng-click="alert('click');">
<li>
{{note.subject|removeHTML}}
<a ng-show="btnShow" ng-click="$event.stopPropagation(); deleteNote(note._id)"><i>DELETE</i></a>
</li>
</div>
作为旁注,ng-click="alert('click')
将寻求$scope.alert()
,如果您希望打开JavaScript基本警报......; - )