任何人都可以解释为什么以下内容会引发" Argument' MainCtrl'不是一个功能,未定义"错误似乎与模块依赖注入与指令(?!)的使用有关。
angular.module('app', [])
.controller('MainCtrl', [function() {
var self = this;
self.name = "will this work";
self.items = [
{
name: "name 1",
test: "test 1"
},
{
name: "name 2",
test: "test 2"
}
];
}]);
angular.module('app',[])
.directive('typeahead', [function() {
return {
templateUrl: 'type-ahead.html',
restrict: 'AEC',
scope: {
items: '=',
prompt: '@',
title: '@',
subtitle: '@',
model: '=',
onSelect: '&'
}, <...more code>
但是当我删除
时,它会完美无缺[]
模块依赖项从指令中删除
angular.module(&#39; app&#39;)。指令(&#39; typeahead&#39;,...)
如果我将指令定义为遵循控制器定义的级联,那么它也可以正常工作,即
angular.module('app', [])
.controller('MainCtrl', [function() {
var self = this;
self.name = "will this work";
self.items = [
{
name: "name 1",
test: "test 1"
},
{
name: "name 2",
test: "test 2"
}
];
}])
.directive('typeahead', [function() {
return {
提前致谢!
答案 0 :(得分:2)
你遇到了Angular的Creation versus Retrieval问题:
注意使用angular.module('myModule',[])将创建模块myModule并覆盖任何名为myModule的现有模块。使用angular.module('myModule')来检索现有模块。
第一次运行angular.module('app',[])
时,Angular会创建一个名为app
的模块。下次,您只需要运行angular.module('app')
,Angular将尝试加载现有模块app
。
由于您再次致电angular.module('app',[])
,因此模块app
已重新初始化。这就是为什么MainCtrl
现在未定义的原因。