AngularJS Argument' ***'不是一个功能,未定义

时间:2014-11-04 08:07:54

标签: angularjs cordova ionic-framework

我正在使用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>

1 个答案:

答案 0 :(得分:1)

控制器的功能必须在依赖项数组中。

.controller('LoginCtrl', ['$scope', '$http', '$state', function($scope, $http, $state) {}]);

而且我认为你还必须在run()和config函数中注入$ ionicPlatform,就像这样

.run(["$ionicPlatform", function($ionicPlatform) {
      ...
    }])

.config(["dep1", function(dep1) {}]);