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
模块包含在my
app.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 defined
controller
s作为指令,
controller
我绝对可以尝试一下。我希望将它们分开,以便重用(尽管我无法想象除了这个菜单之外,我现在还可以使用菜单控制器做什么)。我很快就回来。谢谢@jaredi通知我结果如果您正在注入任何依赖项并希望缩小,请参阅