Javascript Angularjs 1.x控制器在指令中没有响应
所以我试图将我的菜单分成一个指令。我有一个非常简单的控制器:Javascript Angularjs 1.x控制器在指令中没有响应,javascript,angularjs,angularjs-directive,angularjs-controller,Javascript,Angularjs,Angularjs Directive,Angularjs Controller,所以我试图将我的菜单分成一个指令。我有一个非常简单的控制器: function Menu(){ self = this; self.tab = ''; self.selectedTab = function(tab){ self.tab=tab; console.log('setting tab'); } } angular.module('app.menu') .controller('MenuController',Menu); 还有一个简单的
function Menu(){
self = this;
self.tab = '';
self.selectedTab = function(tab){
self.tab=tab;
console.log('setting tab');
}
}
angular.module('app.menu')
.controller('MenuController',Menu);
还有一个简单的指令:
function MenuDirective(){
return {
templateUrl:'Menu.html',
controller:'MenuController',
controllerAs:'menu'
};
}
angular.module('app.menu')
.directive('MenuDirective', MenuDirective)
app.menu
模块包含在myapp.js
中,我的指令位于my索引中,作为
。我的菜单.html
中的代码正确显示,但是当我单击其中一个链接时,看起来像
,我的控制台日志不显示,我的css也不工作。有什么想法/提示吗?如果我把它放回索引页而不是指令中,一切都很好。使用Angular 1.5.X framework您的指令似乎看不到您的控制器。如果将控制器函数与指令添加到同一个文件中,并像下面这样直接引用它会怎么样:
angular.module('app.menu')
.directive('MenuDirective', MenuDirective)
function MenuDirective(){
return {
templateUrl:'Menu.html',
controller: Menu,
controllerAs:'menu'
};
}
function Menu(){
self = this;
self.tab = '';
self.selectedTab = function(tab){
self.tab=tab;
console.log('setting tab');
}
}
事实证明,这就是我缩小一切的方式。我使用gulp将我所有的javascript捆绑到一个文件中,将我所有的css捆绑到另一个文件中,我想它不喜欢这样。我删除了我的包,并将每个文件分别添加到我的索引中,效果很好。谢谢大家的帮助。我很确定您的directive controller属性应该引用函数而不是字符串?我不相信你能用angular definedcontroller
s作为指令,controller
我绝对可以尝试一下。我希望将它们分开,以便重用(尽管我无法想象除了这个菜单之外,我现在还可以使用菜单控制器做什么)。我很快就回来。谢谢@jaredi通知我结果如果您正在注入任何依赖项并希望缩小,请参阅