Javascript 指令中的角度控制器导致严格的di错误

Javascript 指令中的角度控制器导致严格的di错误,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我在我的应用程序中使用ng strict di mod。它适用于我的所有DI,除非我尝试在指令中使用控制器。仅供参考,我使用约翰·帕帕风格指南来格式化我的代码 这是我的指示: (函数(){ "严格使用",; 有棱角的 .module('app.mymodule') .指令(“我的指令”,我的指令); myDirective.$inject=[]; 函数myDirective(){ var指令={ bindToController:对, 控制器:MyDirectiveCtrl, controlle

我在我的应用程序中使用ng strict di mod。它适用于我的所有DI,除非我尝试在指令中使用控制器。仅供参考,我使用约翰·帕帕风格指南来格式化我的代码

这是我的指示:

(函数(){
"严格使用",;
有棱角的
.module('app.mymodule')
.指令(“我的指令”,我的指令);
myDirective.$inject=[];
函数myDirective(){
var指令={
bindToController:对,
控制器:MyDirectiveCtrl,
controllerAs:'vm',
限制:'E',
范围:{
数据:'='
},   
templateUrl:“我的指令template.html”,
};
返回指令;
MyDirectiveCtrl.$inject=['ServiceSvc'];
函数MyDirectiveCtrl(ServiceSvc){
var vm=这个;
vm.foo=foo;
函数foo(){
ServiceSvc.bar();
}
}
}
})();
因此,我在我的
MyDirectiveCtrl
中显式地注入了我的
ServiceSvc
,但在我的Chrom控制台中,我有一个关于严格DI的错误:

Error: [$injector:strictdi] MyDirectiveCtrl is not using explicit annotation and cannot be invoked in strict mode
http://errors.angularjs.org/1.4.3/$injector/strictdi?p0=MyDirectiveCtrl 
    at vendor.js:10
    at Function.annotate [as $$annotate] (vendor.js:209)
    at Object.invoke (vendor.js:233)
    at extend.instance (vendor.js:443)
    at nodeLinkFn (vendor.js:374)
    at vendor.js:397
    at processQueue (vendor.js:703)
    at vendor.js:704
    at Scope.$eval (vendor.js:748)
    at Scope.$digest (vendor.js:743)

知道我为什么会出现这个错误吗?

我认为您必须在外部使用指令中定义的控制器,如下所示

 angular
        .module('app.mymodule')
        .directive('myDirective', myDirective);

myDirective.$inject = [];

function  kissNotificationList() {
    var directive = {
        bindToController: true,
        controller: MyDirectiveCtrl,
        controllerAs: 'vm',
        restrict: 'E',
        scope: {
            data:'='
        },   
        templateUrl: 'my-directive-template.html',  
    };
    return directive;


}

//direcitves controller

 MyDirectiveCtrl.$inject = ['ServiceSvc'];

 function MyDirectiveCtrl(ServiceSvc) {
        var vm = this;

        vm.foo = foo;

        function foo() {
            ServiceSvc.bar();
        }
    }

我认为您必须在外部使用指令中定义的控制器,如下所示

 angular
        .module('app.mymodule')
        .directive('myDirective', myDirective);

myDirective.$inject = [];

function  kissNotificationList() {
    var directive = {
        bindToController: true,
        controller: MyDirectiveCtrl,
        controllerAs: 'vm',
        restrict: 'E',
        scope: {
            data:'='
        },   
        templateUrl: 'my-directive-template.html',  
    };
    return directive;


}

//direcitves controller

 MyDirectiveCtrl.$inject = ['ServiceSvc'];

 function MyDirectiveCtrl(ServiceSvc) {
        var vm = this;

        vm.foo = foo;

        function foo() {
            ServiceSvc.bar();
        }
    }

我认为您必须在外部使用指令中定义的控制器,如下所示

 angular
        .module('app.mymodule')
        .directive('myDirective', myDirective);

myDirective.$inject = [];

function  kissNotificationList() {
    var directive = {
        bindToController: true,
        controller: MyDirectiveCtrl,
        controllerAs: 'vm',
        restrict: 'E',
        scope: {
            data:'='
        },   
        templateUrl: 'my-directive-template.html',  
    };
    return directive;


}

//direcitves controller

 MyDirectiveCtrl.$inject = ['ServiceSvc'];

 function MyDirectiveCtrl(ServiceSvc) {
        var vm = this;

        vm.foo = foo;

        function foo() {
            ServiceSvc.bar();
        }
    }

我认为您必须在外部使用指令中定义的控制器,如下所示

 angular
        .module('app.mymodule')
        .directive('myDirective', myDirective);

myDirective.$inject = [];

function  kissNotificationList() {
    var directive = {
        bindToController: true,
        controller: MyDirectiveCtrl,
        controllerAs: 'vm',
        restrict: 'E',
        scope: {
            data:'='
        },   
        templateUrl: 'my-directive-template.html',  
    };
    return directive;


}

//direcitves controller

 MyDirectiveCtrl.$inject = ['ServiceSvc'];

 function MyDirectiveCtrl(ServiceSvc) {
        var vm = this;

        vm.foo = foo;

        function foo() {
            ServiceSvc.bar();
        }
    }


实际上,这看起来像是关于
NotificationListCtrl
的错误。看一下URL。是的,这是因为在这篇文章中,我将实名
NotificationListCtrl
更改为
MyDirectiveCtrl
。我将编辑我的帖子。实际上,这看起来像是关于
NotificationListCtrl
的错误。看一下URL。是的,这是因为在这篇文章中,我将实名
NotificationListCtrl
更改为
MyDirectiveCtrl
。我将编辑我的帖子。实际上,这看起来像是关于
NotificationListCtrl
的错误。看一下URL。是的,这是因为在这篇文章中,我将实名
NotificationListCtrl
更改为
MyDirectiveCtrl
。我将编辑我的帖子。实际上,这看起来像是关于
NotificationListCtrl
的错误。看一下URL。是的,这是因为在这篇文章中,我将实名
NotificationListCtrl
更改为
MyDirectiveCtrl
。我会编辑我的帖子。但我不明白为什么我的方式不起作用。你知道吗?$inject从未运行过,因为指令已初始化并立即返回。@Tako没问题,我很乐意帮助:)但我不明白为什么我的方式不起作用。你知道吗?$inject从未运行过,因为指令已初始化并立即返回。@Tako没问题,我很乐意帮助:)但我不明白为什么我的方式不起作用。你知道吗?$inject从未运行过,因为指令已初始化并立即返回。@Tako没问题,我很乐意帮助:)但我不明白为什么我的方式不起作用。你知道吗?$inject永远不会运行,因为指令已初始化并立即返回。@Tako没问题,我很乐意帮助:)