Heim  >  Fragen und Antworten  >  Hauptteil

angular.js - angularjs 用ng-reapt渲染的dom 怎么获取上面的属性

angularjs 用ng-reapt渲染的dom 怎么获取上面的属性

PHP中文网PHP中文网2714 Tage vor618

Antworte allen(2)Ich werde antworten

  • 我想大声告诉你

    我想大声告诉你2017-05-15 17:15:44

    你属性的数据本来就是循环出来的,直接去获取数据就可以了,思路上永远不要想jq的方法

    repeat-finish=renderFinish(item)
    $scope.renderFinish=function(item){
      ...
      kit.log(item.id)
    }

    Antwort
    0
  • 怪我咯

    怪我咯2017-05-15 17:15:44

    谢邀,@crazy4x的方式也是OK的。data-* 的一般应用场景,没使用MV*框架,使用事件代理的方式,避免列表数据变化时,需要手动添加/移除监听。通过在父级添加监听,然后获取事件对象,然后获取列表当前项的自定义属性值,下面示例提供另外一种方式,仅供参考。

    <!DOCTYPE html>
    <html lang="en" ng-app="myapp">
    <head>
        <meta charset="UTF-8">
        <title>Angular Repeat-Done Demo</title>
        <script src="https://cdn.bootcss.com/angular.js/1.6.3/angular.min.js"></script>
    </head>
    <body ng-app="myapp">
    <p ng-controller="AppCtrl">
        <h4>Users List</h4>
        <ul>
            <li ng-repeat="user in users" repeat-done="renderFinish($index)"> // user
                {{user.id}} - {{user.name}}
            </li>
        </ul>
    </p>
    <script type="text/javascript">
        var myapp = angular.module("myapp", [])
                .directive('repeatDone', function () { // 用于判断ng-repeat是否执行完成
                    return function (scope, element, attrs) {
                        if (scope.$last) { // all are rendered
                            attrs.repeatDone && scope.$eval(attrs.repeatDone);
                        }
                    }
                })
                .controller("AppCtrl", ['$scope', function ($scope) {
                    $scope.users = [{
                        id: 1,
                        name: 'Lolo'
                    }, {
                        id: 2,
                        name: 'Semlinker'
                    }];
    
                    $scope.renderFinish = function(index) { // user对象
                        console.log(index);
                    };
                }])
    </script>
    </body>
    </html>

    Antwort
    0
  • StornierenAntwort