我有一个简单的app.js
,应该可以加载控制器。控制器尚未加载。希望能有所帮助。
这是我的app.js
:
/* globals APP, angular */
angular.module('templates-outlook', []);
angular.module(APP, [
'templates-outlook',
'ui.router'
])
.config[(
'$stateProvider',
function ($stateProvider) {
console.log("Loaded app.js");
$stateProvider
.state('outlook', {
url: '/extension',
templateUrl: 'templates/outlook/outlook_main.html',
controller: 'OutlookMainController'
})
}
])
这是outlookmain.js。真的很简单。
/* global angular, APP */
angular.module(APP).controller('OutlookMainController', [
console.log('lion king'),
function () {
console.log('blah blah');
}
]);
当我导航到localhost / extension时,我只会看到 狮王 加载的app.js
为什么我看不到“等等”?
注意:我看到狮子王的原因(我认为)是因为我正在加载标题
<script src="/load.php?f=outlook/app.js"></script>
<script src="/load.php?f=outlook/outlookmain.js"></script>
答案 0 :(得分:1)
下面是声明函数的示例之一。
function nameOfFunction() {
console.log('some text to print');
}
对于您的要求,应如下所示。
angular.module(APP).controller('OutlookMainController', [
console.log('lion king');
// Function declaration here
function testFunction() {
console.log('blah blah');
}
// Call the function here
testFunction();
]);
`
答案 1 :(得分:1)
您的控制器定义不正确:
angular.module(APP).controller('OutlookMainController', [
console.log('lion king'),
function () {
console.log('blah blah');
}
]);
更改格式时,很容易看到您将数组作为第二个参数传递。
angular.module(APP).controller('OutlookMainController',
[console.log('lion king'), function () { console.log('blah blah'); }]
);
angular.module(APP).controller('OutlookMainController', [console.log('lion king'), function() { console.log('blah blah'); }]
);
但是,该数组应该包含注入的服务和提供程序,并且数组的最后一个元素是控制器的功能。在这里,您要插入console.log
语句。那没有意义。
而且,如您从Plunker中的此控制器定义所看到的,此代码在控制台中引发错误:https://next.plnkr.co/edit/cHQjFsx3q0oHvkxC
错误:[$ injector:itkn]错误的注入令牌!预期服务 名称为字符串,未定义
我认为您的意思是:
angular.module(APP).controller('OutlookMainController', [function() {
console.log('lion king'),
function () {
console.log('blah blah');
}
}]);
但是,除非您显式调用匿名函数,将其从函数中删除或将其定义为自执行,否则匿名函数仍不会被调用:
angular.module(APP).controller('OutlookMainController', [function() {
console.log('lion king');
console.log("blah blah blah");
(function () {
console.log('blah blah');
})();
function logBlah() {
console.log('blah blah');
}
logBlah();
}]);
AngularJS不会改变Javascript的基本原理。