我知道 stackoverflow 上已经有很多关于 ngTable/AngularJS 的信息,但是我尝试了所有方法,但它不起作用。
我的html是这样的:
<!doctype html>
<html lang="en" >
<head>
<meta charset="utf-8">
<title>Sequencing experiments overview</title>
<script src="/LIMS/angular-1.2.14/angular.js"></script>
<script src="/LIMS/js/controllers.js"></script>
<script src="/LIMS/ng-table-master/ng-table.js"></script>
<link rel="stylesheet" href="/LIMS/ng-table-master/ng-table.css" />
<link data-require="bootstrap-css@*" data-semver="3.0.0" rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" />
<link rel="stylesheet" href="/LIMS/style.css" />
</head>
<body ng-app="dataOverview" ng-controller="searchCtrl">
<div>
Search: <input ng-model="query">
<p><strong>Page:</strong> {{tableParams.page()}}
<p><strong>Count per page:</strong> {{tableParams.count()}}
<table ng-table="tableParams" class="table">
<tr ng-repeat="exp in $data | filter:query">
<td data-title="'id'">
{{exp.id}}
</td>
<td data-title="'name'" sortable ="'name'">
{{exp.name}}
</td>
<td data-title="'Type'">
{{exp.type}}
</td>
</tr>
</table>
</div>
</body>
</html>
我的 controller.js 文件是这样的:
var dataOverview = angular.module('dataOverview', ['ngTable']);
dataOverview.controller('searchCtrl', function searchCtrl($scope, $http, ngTableParams) {
$scope.tableParams = new ngTableParams({
page: 1, // show first page
count: 5 // count per page
},{
getData: function($defer,params) {
$http.get('/LIMS/index_query.php').
success(function(data, status) {
var orderedData = data;
$defer.resolve(orderedData.slice((params.page() - 1) * params.count(),params.page() * params.count()));
})
}
})
});
index_query.php 返回从 MySQL 数据库查询的有效 JSON 对象(此处不显示)。
所以,我猜这段代码几乎没问题。它显示一个表,其中包含来自数据库的列和值。我可以使用过滤器框中的值进行过滤。但是,它只显示 5 行,并且没有按钮可以转到接下来的 5 行或增加页面上的行数。如 ngTable 页面 ( http://bazalt-cms.com/ng-table/example/1 ) 所述。
使用 firebug 检查控制台时,我看到“未捕获的类型错误:无法调用未定义的方法 'push' ”错误。我认为它是错误的填充数组,该数组应该构建按钮以从具有 5 条记录的 1 页转到另一页?我今天浪费了10个小时,所以请赐教,我将非常感激。