如何为ng-table创建自定义指令(使用表和ng-repeat的不同数据)

时间:2015-01-16 15:53:23

标签: angularjs-ng-repeat

我试图为ng-table创建一个自定义指令。 在我的应用程序中,我有多次表“用户”。 我有一个显示所有用户的主表,我还有一些显示有限数量用户的自定义表。 这些表的自定义数据被创建到控制器中,并具有不同的名称(usersList1,usersList2等)。

表格相同(标题,列标签),只有内部数据发生变化。

我想要一个自定义指令并将要传递的数据传递给它。

这是我的代码:

.directive('tableForListingDirective', function () {
        return {
            restrict: 'EA',
            scope: true,
            template: [

                '<table ng-table="tableParams" class="table table-striped table-bordered table-hover" template-pagination="custom/pager">',
                '<tr ng-repeat="user in tableData">',
                '<td width="30" style="text-align: left" header="\'ng-table/headers/checkbox.html\'"> <input type="checkbox" ng-model="user.checked" ng-change="toggleCheckedUserToAdd(user)"/>',
                '<td data-title="\'Status\'" sortable="\'status\'">{{user.status}}</td>',
                '<td data-title="\'Login\'" sortable="\'login\'">{{user.login}}</td>',
                '<td data-title="\'Name\'" sortable="\'name\'">{{user.name}}</td>',
                '<td data-title="\'Email\'" sortable="\'email\'">{{user.email}}</td>',
                '</tr>',
                '</table>'
            ].join(''),
            link: function (scope, element, attrs) {
                scope.tableData=scope.$eval(attrs.tableData);
            },
        }
    });

调用html文件:

<table-for-listing-directive table-data="{{users}}"></table-for-listing-directive>

你可能会说,为什么我没把tableData:“=”放到范围内。 好吧,经过长时间的搜索后,我发现ng-repeat和scope {}不希望彼此合作,所以为了使ng-repeat在指令中工作,我不得不说'scope:true'

在ng-repeat内部,我尝试使ng-repeat="user in {{tableData}}"无法正常工作。

1 个答案:

答案 0 :(得分:0)

在您的HTML更改table-data="{{users}}"table-data="users"