在我输入td之前,没有显示Angular ng-repeat数据

时间:2016-08-04 13:15:10

标签: javascript html angularjs

这很奇怪。

我有以下表格指令:

    /**
 * Created by root on 8/4/16.
 */
angular.module('LBTable').directive('lbTable', ['tabService', function (tabService) {
    return {
        restrict: 'E',
        roles: 'all',
        templateUrl: 'js/helpers/LBTable/directives/lb-table/lb-table.html',
        scope: {
            tableData: '=',
            tableFields: '=',
            actionElement: '='
        },
        link: function (scope, element, attrs) {
            scope.filterFields = [];
            findFilterFields();
            function findFilterFields() {
                scope.tableFields.forEach(function (x) {
                    if (x.sortable == true) {
                        scope.filterFields.push(x.fieldKey);
                    }
                });
            }
        }
    }
}]);

这有以下html:

<table id="table-client" class="table table-responsive" >
<thead>
<tr>
    <th ng-repeat="field in tableFields" translate="{{field.headerTitle | translate}}"></th>
    <th class="text-right"
        translate="TERMS.ADMINISTRATION" ng-if="actionElement != null"></th>
</tr>
</thead>
<tbody>
<tr ng-repeat="item in tableData track by item.id">
    <lb-table-element element-data="item" table-fields="tableFields"></lb-table-element>
</tr>
</tbody>

在此范围内,您可以看到另一个指令:lbTableElement

该指令如下所示:

    /**
 * Created by root on 8/4/16.
 */
angular.module('LBTable').directive('lbTableElement', ['tabService', function (tabService) {
    return {
        restrict: 'E',
        roles: 'all',
        replace: true,
        templateUrl: 'js/helpers/LBTable/directives/lb-table-element/lb-table-element.html',
        scope: {
            elementData: '=',
            tableFields: '='
        },
        link: function (scope, element, attrs) {
            var data = scope.elementData;
        }
    }
}]);

并有以下html:

 <td ng-repeat="field in tableFields">
    {{elementData[field.fieldKey]}}
</td>

Nnow tableData数组包含1240个对象。但是当我运行时,没有显示数据。

但是,如果我重新格式化我的html看起来像这样:

<td> <lb-table-element element-data="item" table-fields="tableFields"></lb-table-element></td>

对象item不再是undefined,而是显示数据。

谁能告诉我为什么?

Fiddle for you to try out (simpler example)

1 个答案:

答案 0 :(得分:1)

在所有评论之后,我意识到是什么导致了你的麻烦。您需要通过将指令设置为属性而不是像这样的元素来修复它:

fgets()

然后,您可以重复指令中的数据,也可以在元素本身中重复数据。我担心没有其他解决办法。