为什么我的指令会抛出“错误:$injector:unpr Unknown Provider"? [英] Why is my Directive throwing "Error: $injector:unpr Unknown Provider"

查看:48
本文介绍了为什么我的指令会抛出“错误:$injector:unpr Unknown Provider"?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在将我的控制器、工厂和指令重构为推荐的 Angular-Style-Guide 用于 Angular Snippets.

I've working on refactoring my Controllers, Factories and Directives to the recommended Angular-Style-Guide for Angular Snippets.

我已经让控制器和工厂使用新样式正常工作,但不是指令.

I've gotten the Controllers and Factories working correctly with the new style, but not the Directives.

未知提供者:$scopeProvider <- $scope <- platformHeaderDirective

有错误的新指令样式:

(function() { "use strict";

    angular
        .module('platformHeaderDirectives', [])
        .directive('platformHeader', directive);
    directive.$inject = ['$scope'];
    /* @ngInject */
    function directive ($scope) {
        var directive = {
            templateUrl : "header/platform_header/platformHeader.html",
            restrict    : "E",
            replace     : true,
            bindToController: true,
            controller: Controller,
            controllerAs: 'vm',
            link: link,
            scope: {
            }
        };
        return directive;
        function link(scope, element, attrs) {

        }
    }
    /* @ngInject */
    function Controller () {

    }
})();

我的旧工作指令不会引发错误:

(function() { "use strict";

    angular.module('platformHeaderDirectives', [])

    .directive('platformHeader', function() {
        return {
            templateUrl : "header/platform_header/platformHeader.html",
            restrict    : "E",
            replace     : true,
            scope       : false,
            controller  : ['$scope',
                           function($scope) {

                /** Init platformHeader scope */
                // var vs = $scope;

            }]
        }
    });

})();

推荐答案

$scope 不能注入指令.我已更改代码以在指令控制器中注入 $scope.

$scope can not be injected to directive. i have changed code to inject $scope in controller of directive.

代码:

(function() { "use strict";

    angular
        .module('platformHeaderDirectives', [])
        .directive('platformHeader', directive);
    
    /* @ngInject */
    function directive () {
        var directive = {
            templateUrl : "header/platform_header/platformHeader.html",
            restrict    : "E",
            replace     : true,
            bindToController: true,
            controller: Controller,
            controllerAs: 'vm',
            link: link,
            scope: {
            }
        };
        return directive;
        function link(scope, element, attrs) {

        }
    }
    /* @ngInject */
    Controller.$inject = ['$scope'];
    function Controller ($scope) {

    }
})();

这篇关于为什么我的指令会抛出“错误:$injector:unpr Unknown Provider"?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆