ngTable 不显示行
ngTable is not showing rows
在这个 plunker 中,我有一个本应显示两行的 ngTable
,但它只显示 header。这段代码有什么问题?
Javascript
var app = angular.module('app', ['ngTable']);
app.controller('myCtl', function($scope,$timeout,NgTableParams) {
$timeout(function() {
$scope.data = [
{ uid: 'User 1', nm: 'Name 1', ugr: 'Group 1'},
{ uid: 'User 2', nm: 'Name 2', ugr: 'Group 2'}
];
$scope.tableParams = new NgTableParams({dataset: $scope.data});
}, 1000);
$scope.toggleFilter = function (){
$scope.showFilter = !$scope.showFilter;
};
});
HTML
<div ng-controller="myCtl" ng-app="app">
<a href="javascript:void(0)" ng-click="toggleFilter()">Toggle Filter</a>
<table ng-table="tableParams" show-filter="showFilter" class="table table-bordered">
<tbody>
<tr ng-repeat="u in $data">
<td title="'User ID'" filter="{ uid: 'text' }" sortable="'uid'" style="width:150px">{{ u.uid }}</td>
<td title="'Name'" filter="{ nm: 'text' }" sortable="'nm'" style="width:150px">{{ u.nm }}</td>
<td title="'Group'" filter="{ ugr: 'text'}" sortable="'ugr'" style="width:200px">{{ u.ugr }}</td>
</tr>
</tbody>
</table>
</div>
更新:此答案不正确,请参阅标记为 "correct" 的答案。
如果您在 HTML 中将“$data”更改为 'data',它会起作用。
<table ng-table="tableParams" show-filter="showFilter" class="table table-bordered">
<tbody>
<tr ng-repeat="u in data">
<td title="'User ID'" filter="{ uid: 'text' }" sortable="'uid'" style="width:150px">{{ u.uid }}</td>
<td title="'Name'" filter="{ nm: 'text' }" sortable="'nm'" style="width:150px">{{ u.nm }}</td>
<td title="'Group'" filter="{ ugr: 'number'}" sortable="'ugr'" style="width:200px">{{ u.ugr }}</td>
</tr>
</tbody>
</table>
看这里:http://plnkr.co/edit/WlPVGYjSshLkwbJ78xNO?p=preview
NgTable 网站上的示例使用 v1.0.0-beta.9,所以我猜它们可能有点过时了。
正确答案:
抱歉,我第一次回答太仓促了。我的解决方案修复了它,但它不正确。
真正的问题是您需要在控制器中将 'dataset' 更改为 'data',如下所示(使用 NgTable v.0.8.3):
$scope.tableParams = new NgTableParams({count: 5}, {data: $scope.data});
我也加了计数,不然一次显示一个项目。
在这个 plunker 中,我有一个本应显示两行的 ngTable
,但它只显示 header。这段代码有什么问题?
Javascript
var app = angular.module('app', ['ngTable']);
app.controller('myCtl', function($scope,$timeout,NgTableParams) {
$timeout(function() {
$scope.data = [
{ uid: 'User 1', nm: 'Name 1', ugr: 'Group 1'},
{ uid: 'User 2', nm: 'Name 2', ugr: 'Group 2'}
];
$scope.tableParams = new NgTableParams({dataset: $scope.data});
}, 1000);
$scope.toggleFilter = function (){
$scope.showFilter = !$scope.showFilter;
};
});
HTML
<div ng-controller="myCtl" ng-app="app">
<a href="javascript:void(0)" ng-click="toggleFilter()">Toggle Filter</a>
<table ng-table="tableParams" show-filter="showFilter" class="table table-bordered">
<tbody>
<tr ng-repeat="u in $data">
<td title="'User ID'" filter="{ uid: 'text' }" sortable="'uid'" style="width:150px">{{ u.uid }}</td>
<td title="'Name'" filter="{ nm: 'text' }" sortable="'nm'" style="width:150px">{{ u.nm }}</td>
<td title="'Group'" filter="{ ugr: 'text'}" sortable="'ugr'" style="width:200px">{{ u.ugr }}</td>
</tr>
</tbody>
</table>
</div>
更新:此答案不正确,请参阅标记为 "correct" 的答案。
如果您在 HTML 中将“$data”更改为 'data',它会起作用。
<table ng-table="tableParams" show-filter="showFilter" class="table table-bordered">
<tbody>
<tr ng-repeat="u in data">
<td title="'User ID'" filter="{ uid: 'text' }" sortable="'uid'" style="width:150px">{{ u.uid }}</td>
<td title="'Name'" filter="{ nm: 'text' }" sortable="'nm'" style="width:150px">{{ u.nm }}</td>
<td title="'Group'" filter="{ ugr: 'number'}" sortable="'ugr'" style="width:200px">{{ u.ugr }}</td>
</tr>
</tbody>
</table>
看这里:http://plnkr.co/edit/WlPVGYjSshLkwbJ78xNO?p=preview
NgTable 网站上的示例使用 v1.0.0-beta.9,所以我猜它们可能有点过时了。
正确答案:
抱歉,我第一次回答太仓促了。我的解决方案修复了它,但它不正确。
真正的问题是您需要在控制器中将 'dataset' 更改为 'data',如下所示(使用 NgTable v.0.8.3):
$scope.tableParams = new NgTableParams({count: 5}, {data: $scope.data});
我也加了计数,不然一次显示一个项目。