Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 参数'&书信电报;控制器>';不是角度布线中的函数_Javascript_Angularjs_Ionic Framework_Ngroute - Fatal编程技术网

Javascript 参数'&书信电报;控制器>';不是角度布线中的函数

Javascript 参数'&书信电报;控制器>';不是角度布线中的函数,javascript,angularjs,ionic-framework,ngroute,Javascript,Angularjs,Ionic Framework,Ngroute,我得到这个错误,我无法找到问题,下面是我的错误 错误:[ng:areq]参数“homeCtrl”不是函数,未定义 http://errors.angularjs.org/1.2.25/ng/areq?p0=homeCtrl&p1=not%20aNaNunction%2C%20got%20undefined 在有效期内,国家财产(http://localhost:8100/lib/ionic/js/ionic.bundle.js:7703:12) 在阿塞塔格(http://localhost:81

我得到这个错误,我无法找到问题,下面是我的错误

错误:[ng:areq]参数“homeCtrl”不是函数,未定义
http://errors.angularjs.org/1.2.25/ng/areq?p0=homeCtrl&p1=not%20aNaNunction%2C%20got%20undefined
在有效期内,国家财产(http://localhost:8100/lib/ionic/js/ionic.bundle.js:7703:12)
在阿塞塔格(http://localhost:8100/lib/ionic/js/ionic.bundle.js:9134:11)
在assertArgFn(http://localhost:8100/lib/ionic/js/ionic.bundle.js:9144:3)
以$get(http://localhost:8100/lib/ionic/js/ionic.bundle.js:14903:9)
在updateView(http://localhost:8100/lib/ionic/js/ionic.bundle.js:42986:30)
在IonicModule.directive.directive.compile处(http://localhost:8100/lib/ionic/js/ionic.bundle.js:42942:9)
在诺德琳(http://localhost:8100/lib/ionic/js/ionic.bundle.js:14336:13)
在KFN(http://localhost:8100/lib/ionic/js/ionic.bundle.js:13730:13)
在诺德琳(http://localhost:8100/lib/ionic/js/ionic.bundle.js:14330:24)
在KFN(http://localhost:8100/lib/ionic/js/ionic.bundle.js:13730:13)

以下是我的Angular和Ionic项目:

#app.js
angular.module('ft', ['ionic', 'ft.controllers'])
.run(function($ionicPlatform) {
  // run method
})
.config(function($stateProvider, $urlRouterProvider){
  $stateProvider
  .state('app', {
    url: '/app',
    abstract: true,
    templateUrl: 'templates/sideMenu.html',
    controller: 'menuCtrl'
  })
  .state('app.home', {
    url: '/home',
    views: {
      'menuContent': {
        templateUrl: 'templates/home.html',
        controller: 'homeCtrl'
      }
    }
  });
  $urlRouterProvider.otherwise('/app/home');
});

#www/js/controllers/home_ctrl.js
angular.module('ft.controllers', [])
  .controller('homeCtrl', function($scope, $ionicModal, $timeout){

  });

#index.html file
<script src="js/app.js"></script>
<script src="js/controllers/home_ctrl.js"></script>
#app.js
角度模块('ft'、['ionic'、'ft.Controller']))
.run(函数($ionicPlatform){
//运行方法
})
.config(函数($stateProvider,$urlRouterProvider){
$stateProvider
.state('应用程序'{
url:“/app”,
摘要:没错,
templateUrl:'templates/sideMenu.html',
控制器:“menuCtrl”
})
.state('app.home'{
url:“/home”,
观点:{
“菜单内容”:{
templateUrl:'templates/home.html',
控制器:“homeCtrl”
}
}
});
$urlRouterProvider。否则('/app/home');
});
#www/js/controllers/home\u ctrl.js
角度模块('ft.controllers',[])
.controller('homeCtrl',函数($scope、$IonicModel、$timeout){
});
#index.html文件

但是如果我从routes中删除
homeCtrl
,它可以正常工作。我现在花了相当多的时间,对我来说似乎还可以

看起来您正在使用
捆绑和缩小
,请尝试:

var app = angular.module('ft.controllers', []);
app.controller('homeCtrl', ['$scope', '$ionicModal', '$timeout', function ($scope, $ionicModal, $timeout) {
});

JS代码的缩小将替换变量名
AngularJS
基于此名称进行模块注入。

最后我解决了问题,问题是
ft。控制器在两个控制器中使用

angular.module('ft.controllers', [])
  .controller('homeCtrl', function($scope, $ionicModal, $timeout){
  });

angular.module('ft.controllers', [])
.controller('menuCtrl', function($scope, $ionicModal, $timeout){
]});
当我将名称更改为
ft.controllers.home
ft.controllers.menu
并将其添加到
app.js
时,它开始工作

我怎么会想到它会像我相信的那样工作呢这在
ionic
侧菜单中使用

#controllers.js from ionic started sideMenu app
angular.module('starter.controllers', [])

.controller('AppCtrl', function($scope, $ionicModal, $timeout) {
})

.controller('PlaylistsCtrl', function($scope) {
})


您能否毫无疑问地验证浏览器是否能够下载
home\u ctrl.js
文件?我在plnkr中运行了它,没有错误:OP,我想您的home\u ctrl.js位置是wrong@MichaelPerrenoud,谢谢你的回答
home\u ctrl.js可从浏览器访问,问题在于模块加载重复。我贴了一个答案details@NoIdeaForName,感谢您的回答,home_ctrl.js可从浏览器访问,问题在于模块加载重复。我发布了一个带有detailsNo的答案,这是有效的初始化。不幸的是,这仍然不是问题所在。Angular找不到控制器,因为它未加载。当您使用缩小时,这怎么可能不是问题?如果缩小过程更改了控制器的签名,如何找到控制器?缩小不会更改控制器本身的名称,只是更改了注入的参数名称,即使在所有引用位置,它们也会更改。缩小规模不是问题,这不是事实。Angular按参数名称注入。请记住,您实际上可以在
app.js
文件中这样定义模块
Angular.module('ft.controllers',[])
,然后在任何类似
Angular.module('ft.controllers').controller(…)
的地方添加控制器。请注意,第二个调用不发送数组-它将成为get而不是define。