我正在使用Ionic框架与AngularJS和Cordova构建混合应用程序。对于AngularJS和JavaScript来说都是全新的,这不是一个甜蜜的旅程。
一切正常,直到我决定使用每个控制器/服务1个文件重新组织我的应用程序的结构。所以我很确定问题来自那里,我找不到如何修复它。
以下是代码:
JS / app.js
angular.module('app', ['ionic', 'app.controllers'])
.run(function($ionicPlatform) {
...
})
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('login', {
url: '/login',
templateUrl: 'templates/login.html',
controller: 'LoginCtrl'
})
...
JS /控制器/ LoginCtrl.js
angular.module('app.controllers', [])
.controller('LoginCtrl', ['$scope', '$http', '$state'], function($scope, $http, $state) {});
的index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<title></title>
<link href="lib/ionic/css/ionic.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<script src="lib/ionic/js/ionic.bundle.js"></script>
<script src="cordova.js"></script>
<script src="js/app.js"></script>
<script src="js/controllers/LoginCtrl.js"></script>
</head>
<body ng-app="app">
<ion-nav-view></ion-nav-view>
</body>
</html>
尝试了上述代码的许多变体,但无济于事。
任何帮助都非常感谢...
修改
我可能在找出问题所在方面取得了一些进展(或者只是另一种症状)。
在我的index.html
文件中,如果我切换控制器声明的顺序,那么在app.js之后声明的那个总是被忽略。这是我按照下面的顺序把它们搞得的错误
Controller 'ionNavBar', required by directive 'ionNavButtons', can't be found!
<script src="lib/ionic/js/ionic.bundle.js"></script>
<script src="cordova.js"></script>
<script src="js/app.js"></script>
<script src="js/controllers/RegisterCtrl.js"></script>
<script src="js/controllers/LoginCtrl.js"></script>
答案 0 :(得分:1)
控制器的功能必须在依赖项数组中。
.controller('LoginCtrl', ['$scope', '$http', '$state', function($scope, $http, $state) {}]);
而且我认为你还必须在run()和config函数中注入$ ionicPlatform,就像这样
.run(["$ionicPlatform", function($ionicPlatform) {
...
}])
.config(["dep1", function(dep1) {}]);