所以我在应用程序上使用Angular 1.6。使用ng-click
和ng-focus
过去在不同元素上运作良好。但是,我发现我无法在ng-repeat
内完成工作。
例如:使用ng-repeat创建4个元素
<!DOCTYPE html>
<html lang="en-US">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>
<div ng-app="" ng-init="isFocus=true">
<div ng-show="isFocus">
<ul>
<li ng-repeat="i in [1, 2, 3, 4]"><a href="" ng-blur="isFocus=false" >test</a></li>
</ul>
</div>
</div>
</body>
</html>
这不起作用。当我选中或单击列表元素并留在元素ng-blur
时应该更改为false。它似乎做到了,但在某种不同的范围内。如果我打印出值,你可以看到它在休假时变为假。但是它不会将其设置为页面的变量,因此div上的ng-show
现在为false并隐藏。您可以在创建的jsFiddle中查看并试用它。
https://jsfiddle.net/Lightk3ira/4xc1ev6b/
我还创建了一个没有ng-repeat
的小提琴,注意标签或点击列表项,然后点击ng-blur
开始关闭并将变量全局设置为false,就像它应该和ng- show隐藏了div,因为它是假的。
https://jsfiddle.net/Lightk3ira/03tus8yg/
我希望ng-blur和ng-focus能够处理ng-repeat
内的项目,但是,它似乎无法正常工作,因为你可以从小提琴中看到。似乎变量确实变为false,因为它在项目旁边输出它。但请注意,顶部的段落标记表示该变量仍设置为“真实”&#39;这就是div保持显示的原因,因为isFocus
仍等于真。
我似乎无法找出为什么会发生这种情况或者如何对抗它以使Angular按照预期的方式工作,就像在没有ng-repeat
的第二小提琴中一样。