javascript - AngularJS中ng-repeat问题求解答

查看:78
本文介绍了javascript - AngularJS中ng-repeat问题求解答的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

求教:如下代码里面的ng-repeat="i in [1]"是什么意思?为什么点击第一个button时<tt>MyEvent</tt> count: {{count}}会发生值得变化,点击第二个button时没反应?

HTML:

<div ng-controller="EventController">
                Root scope
                <tt>MyEvent</tt> count: {{count}}
                <ul>
                    <li ng-repeat="i in [1]" ng-controller="EventController">
                        <button ng-click="$emit('MyEvent')">
                            $emit('MyEvent')
                        </button>
                        <button ng-click="$broadcast('MyEvent')">
                            $broadcast('MyEvent')
                        </button>
                        <br>
                        Middle scope
                        <tt>MyEvent</tt> count: {{count}}
                        <ul>
                            <li ng-repeat="item in [1, 2]" ng-controller="EventController">
                                Leaf scope
                                <tt>MyEvent</tt> count: {{count}}
                            </li>
                        </ul>
                    </li>
                </ul>
            </div>
            
            

JS:

 function EventController($scope) {
        $scope.count = 0;
        $scope.$on('MyEvent', function() {
            $scope.count++;
        });
    }

解决方案

作用域不同,ng-repeat里的button属于scope的子域即下级域。
因此emmit(向上级域发送消息)可以到达scope,而broadcast(向下级域发送消息)无法到达scope。
建议再看看文档。

这篇关于javascript - AngularJS中ng-repeat问题求解答的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆