Angular 应用在注入分页依赖项时无法运行
Angular App doesn't work when injecting a pagination dependency
我正在使用 AngularJs 构建一个简单的单页应用程序,它检索存储在基于服务器的应用程序上的数据。当我尝试注入分页指令时,应用程序无法运行,它只显示导航栏。
我已遵循 this 教程。
此外,控制台没有显示任何错误。
以下是我尝试实现分页的文件:
main.html:
<div class="page-header">
<h2 id="tables">Pagination in Angular Js</h2>
</div>
<div ng-controller="UsersList">
<table class="table striped">
<thead>
<tr>
<th>Last Name</th>
<th>First Name</th>
<th>Created At</th>
<!--<th>Status</th>-->
</tr>
</thead>
<tbody>
<tr dir-paginate="user in users | itemsPerPage: pageSize" current-page="currentPage">
<td>{{user.last_name}}</td>
<td>{{user.first_name}}</td>
<td>{{user.created_at}}</td>
</tr>
</tbody>
</table>
<dir-pagination-controls boundary-links="true" max-size="10" template-url="app/main/dirPagination.tpl.html"></dir-pagination-controls>
</div>
main.js:
angular.module('Js-Users-App', ['angularUtils.directives.dirPagination']).controller('UsersList', UsersList);
UsersList.$inject = ['$scope', 'userDataFactory', 'angularUtils.directives.dirPagination'];
function UsersList($scope, userDataFactory){
$scope.users = [];
$scope.currentPage = 1;
$scope.pageSize = 10;
// Get the list of users
userDataFactory.userList().then(function(response) {
$scope.users = response.data;
});
}
用户数据-factory.js:
angular.module('Js-Users-App').factory('userDataFactory', userDataFactory);
function userDataFactory($http) {
return {
userList: userList
};
function userList() {
return $http.get("users.json").then(complete).catch(failed);
}
function complete(response) {
return response;
}
function failed(error) {
console.log(error.statusText);
}
}
dir-paginate 在以下文件中声明:
<html ng-app="Js-Users-App">
<head>
<meta charset="utf-8">
<title>Js Users</title>
<!-- Compiled and minified CSS -->
<link rel="stylesheet" href="node_modules/materialize-css/dist/css/materialize.min.css">
<!--Import Google Icon Font-->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="css/style.css" type="text/css" rel="stylesheet" media="screen,projection"/>
</head>
<body>
<nav class="white" role="navigation">
<div class="nav-wrapper container">
<a id="logo-container" href="#/" class="brand-logo">Js Users</a>
<ul class="right hide-on-med-and-down">
<li><a href="#/add">Add</a></li>
</ul>
<ul id="nav-mobile" class="side-nav">
<li><a href="#/add">Add</a></li>
</ul>
<a href="#" data-activates="nav-mobile" class="button-collapse"><i class="material-icons">menu</i></a>
</div>
</nav>
<div class="container">
<div ng-view></div>
</div>
<script src="node_modules/angular/angular.min.js"></script>
<script src="node_modules/angular-route/angular-route.min.js"></script>
<script src="node_modules/jquery/dist/jquery.min.js"></script>
<script src="node_modules/materialize-css/dist/js/materialize.min.js"></script>
<!--<script src="js/ui-bootstrap-2.5.0.min.js"></script>-->
<script src="js/dirPagination.js"></script>
<script type="text/javascript" src="app/app.js"></script>
<script type="text/javascript" src="app/main/main.js"></script>
<script type="text/javascript" src="app/user-data-factory/user-data-factory.js"></script>
</body>
</html>
脚本位于 js
文件夹中。
该应用程序在一个简单的 Web 服务器上 运行,以 python -m SimpleHTTPServer
开头。
我找不到问题所在。也因为我仍然不知道如何很好地调试。是因为应用程序没有加载新指令吗?谢谢。
更新 1
我已经向您展示了项目结构和整个代码:http://plnkr.co/edit/LoICEnE5nkwLDvsu7URD
ng-app
不应在 <html>
元素上定义,除非另有证明。当加载 jQuery 时,这可能会导致不良行为。
jQuery 应该在 Angular 和其他可能使用它的依赖项(Materialize)之前加载。
Js-Users-App
正在重新定义模块:
angular.module('Js-Users-App', ['angularUtils.directives.dirPagination']).controller('UsersList', UsersList);
这消除了路由器配置,因此应用程序不执行任何操作。该模块应定义一次,并包含所有模块依赖项:
angular.module("Js-Users-App", ["ngRoute", 'angularUtils.directives.dirPagination'])
在那之后 angular.module("Js-Users-App")
应该只用作 getter(没有第二个参数)。
UsersList
控制器无缘无故地注入 angularUtils.directives.dirPagination
,这将导致错误,因为没有这样的服务 - 这是一个指令。应该省略。
我正在使用 AngularJs 构建一个简单的单页应用程序,它检索存储在基于服务器的应用程序上的数据。当我尝试注入分页指令时,应用程序无法运行,它只显示导航栏。
我已遵循 this 教程。
此外,控制台没有显示任何错误。 以下是我尝试实现分页的文件:
main.html:
<div class="page-header">
<h2 id="tables">Pagination in Angular Js</h2>
</div>
<div ng-controller="UsersList">
<table class="table striped">
<thead>
<tr>
<th>Last Name</th>
<th>First Name</th>
<th>Created At</th>
<!--<th>Status</th>-->
</tr>
</thead>
<tbody>
<tr dir-paginate="user in users | itemsPerPage: pageSize" current-page="currentPage">
<td>{{user.last_name}}</td>
<td>{{user.first_name}}</td>
<td>{{user.created_at}}</td>
</tr>
</tbody>
</table>
<dir-pagination-controls boundary-links="true" max-size="10" template-url="app/main/dirPagination.tpl.html"></dir-pagination-controls>
</div>
main.js:
angular.module('Js-Users-App', ['angularUtils.directives.dirPagination']).controller('UsersList', UsersList);
UsersList.$inject = ['$scope', 'userDataFactory', 'angularUtils.directives.dirPagination'];
function UsersList($scope, userDataFactory){
$scope.users = [];
$scope.currentPage = 1;
$scope.pageSize = 10;
// Get the list of users
userDataFactory.userList().then(function(response) {
$scope.users = response.data;
});
}
用户数据-factory.js:
angular.module('Js-Users-App').factory('userDataFactory', userDataFactory);
function userDataFactory($http) {
return {
userList: userList
};
function userList() {
return $http.get("users.json").then(complete).catch(failed);
}
function complete(response) {
return response;
}
function failed(error) {
console.log(error.statusText);
}
}
dir-paginate 在以下文件中声明:
<html ng-app="Js-Users-App">
<head>
<meta charset="utf-8">
<title>Js Users</title>
<!-- Compiled and minified CSS -->
<link rel="stylesheet" href="node_modules/materialize-css/dist/css/materialize.min.css">
<!--Import Google Icon Font-->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="css/style.css" type="text/css" rel="stylesheet" media="screen,projection"/>
</head>
<body>
<nav class="white" role="navigation">
<div class="nav-wrapper container">
<a id="logo-container" href="#/" class="brand-logo">Js Users</a>
<ul class="right hide-on-med-and-down">
<li><a href="#/add">Add</a></li>
</ul>
<ul id="nav-mobile" class="side-nav">
<li><a href="#/add">Add</a></li>
</ul>
<a href="#" data-activates="nav-mobile" class="button-collapse"><i class="material-icons">menu</i></a>
</div>
</nav>
<div class="container">
<div ng-view></div>
</div>
<script src="node_modules/angular/angular.min.js"></script>
<script src="node_modules/angular-route/angular-route.min.js"></script>
<script src="node_modules/jquery/dist/jquery.min.js"></script>
<script src="node_modules/materialize-css/dist/js/materialize.min.js"></script>
<!--<script src="js/ui-bootstrap-2.5.0.min.js"></script>-->
<script src="js/dirPagination.js"></script>
<script type="text/javascript" src="app/app.js"></script>
<script type="text/javascript" src="app/main/main.js"></script>
<script type="text/javascript" src="app/user-data-factory/user-data-factory.js"></script>
</body>
</html>
脚本位于 js
文件夹中。
该应用程序在一个简单的 Web 服务器上 运行,以 python -m SimpleHTTPServer
开头。
我找不到问题所在。也因为我仍然不知道如何很好地调试。是因为应用程序没有加载新指令吗?谢谢。
更新 1
我已经向您展示了项目结构和整个代码:http://plnkr.co/edit/LoICEnE5nkwLDvsu7URD
ng-app
不应在 <html>
元素上定义,除非另有证明。当加载 jQuery 时,这可能会导致不良行为。
jQuery 应该在 Angular 和其他可能使用它的依赖项(Materialize)之前加载。
Js-Users-App
正在重新定义模块:
angular.module('Js-Users-App', ['angularUtils.directives.dirPagination']).controller('UsersList', UsersList);
这消除了路由器配置,因此应用程序不执行任何操作。该模块应定义一次,并包含所有模块依赖项:
angular.module("Js-Users-App", ["ngRoute", 'angularUtils.directives.dirPagination'])
在那之后 angular.module("Js-Users-App")
应该只用作 getter(没有第二个参数)。
UsersList
控制器无缘无故地注入 angularUtils.directives.dirPagination
,这将导致错误,因为没有这样的服务 - 这是一个指令。应该省略。