AngularJS分隔控制器,Argument不是函数,它是未定义的
AngularJS Separating The Controllers, Argument is not a function, it is undefined
我知道它被问了数百次,但我真的找不到错误。我看过所有类似的问题。起初,我在一个页面上做了所有的事情,它很有效,但显然我需要学会将我的控制器分离到不同的文件。我做了以下事情:
partials/hosts.html:
Hosts Page
<div ng-controller="HostsCtrl">
{{ title }}
</div>
index.html
<html>
<head>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-route/angular-route.js"></script>
<script src="bower_components/angular-bootstrap/ui-bootstrap.min.js"></script>
<script src="js/myApp.js"></script>
<script src="js/HostsCtrl.js"></script>
</head>
<body ng-app="MyApp">
...
js/MyApp.js
创建MyApp
模块和名为controllers
的子模块
var app = angular.module('MyApp', ['ngRoute', 'ui.bootstrap']);
console.log("index.js file loaded");
angular.module('MyApp.controllers', []);
js/HostsCtrl.js
只是MyApp.controllers
模块中的一个简单控制器,用于显示你好世界和时间。
console.log("HostsCtrl.js file loaded");
angular.module('MyApp.controllers').controller("HostsCtrl", function($scope) {
$scope.title = "Hello world" + new Date().getTime();
});
控制台输出:
index.js file loaded MyApp.js:2
HostsCtrl.js file loaded HostsCtrl.js:1
Error: [ng:areq] Argument 'HostsCtrl' is not a function, got undefined
我认为加载顺序是正确的,但我不明白为什么它会出现错误,并且无法解析HostsCtrl。我做错了什么?
看起来您从未声明MyApp.controllers
依赖项(因为您的控制器在单独的模块中)。试试这个:
var app = angular.module('MyApp', [
'ngRoute',
'ui.bootstrap',
'MyApp.controllers'
]);
相关文章:
- 现有函数未定义
- jQuery$.post可以在chrome、safari中工作,但不能在FF中工作(声明成功回调函数未定义)
- AngularJS ng repeat显示原型函数未定义
- jQuery onclick 函数:未定义不是一个函数
- 函数未定义
- 为什么在jsfiddle中显示ReferenceError:函数未定义
- 函数未定义,实际定义时为
- 函数未定义的Javascript(Basic)
- ajax函数未定义
- 为什么window.onload函数未定义
- 模块模式:函数未定义
- 包含的javascript源代码通过PHP,onmousemove事件,函数未定义
- 单击链接时出现函数未定义错误
- AngularJS和Angular Snap:SSnap构造函数未定义
- 在Node.js中,从同一文件中的另一个函数引用一个函数会导致'ReferenceError:-函数-未定义
- symfony trick javascript函数未定义
- 不断获取JS函数未定义错误
- AngularJS HTTP 资源 - 响应函数未定义
- 函数未定义,参数格式
- JavaScript 中的函数未定义