javascript - AngularJS中ng-repeat问题求解答
迷茫
迷茫 2017-04-11 11:08:41
[JavaScript讨论组]

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

HTML:

<p 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>
            </p>
            
            

JS:

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

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(3)
天蓬老师

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

伊谢尔伦

ng-repeat="i in [1]"就是遍历数组嘛。[1]就是只有一个元素的数组,而i就是每次遍历的数组子项value值。

至于第二个button为什么点击没反应好像是因为你没有在第二个button绑定点击事件。

不建议使用同名的controller

迷茫

这是官方文档Developer Guide中Scopes中涉及Scope Events Propagation的示例
示例代码有效,不知你是怎么写的

angular.module('eventExample', [])
.controller('EventController', ['$scope', function($scope) {
  $scope.count = 0;
  $scope.$on('MyEvent', function() {
    $scope.count++;
  });
}]);

https://docs.angularjs.org/guide/scope

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号