Angular 1.6:ng-blur和ng-focus对ng-repeat中的元素不起作用

时间:2017-02-08 02:40:56

标签: angularjs angularjs-directive angularjs-ng-repeat

所以我在应用程序上使用Angular 1.6。使用ng-clickng-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的第二小提琴中一样。

0 个答案:

没有答案