Angulajs在指令中使用或注入服务

时间:2015-09-26 05:01:15

标签: angularjs angularjs-directive angularjs-service

我是新手使用angularjs。我在一个单独的文件中创建了一个指令和服务。当我将服务包含在指令中时,会出现错误:[$ injector:modulerr]。

这是我的文件结构和文件: -

指令: - video_course.js

videoCourseApp.directive('mcssForm' ,function(){
        return{
            restrict : 'C',
            templateUrl : 'assets/template_blocks/mcss_form.html',
            link: function(scope,element,attribute){
            }
        };
});

videoCourseApp.directive('addNewMsccOption', function(incrementId){
        return{
            replace: true,
            restrict : 'C',
            template : '<li><input name="test" type="radio" ng-model="videoCourseQuestions.mcss_option"/><input ng-model="videoCourseOptions.Option{{newid}}" type="text"   class="option"  placeholder = "Enter your Option{{newid}}" />',
            link: function(scope,element,attribute){
                scope.newid = incrementId.getAndIncrement;
            }
        };
    });

这是我的服务文件: - videoservice.js

videoCourseApp.service('incrementId', function(){
    var index = 4;
    this.getAndIncrement = function () {
        return index++;
    };
});

最后这里是我的主要app.js文件,其中定义了所有方法: -

var videoCourseApp = angular.module('videocourse' , ['ngDragDrop','mcssForm','addNewMsccOption']);

videoCourseApp.controller('video_course_add_question',function($scope, $timeout, $compile){


});

这是我的index.html文件: - &gt;

<script src="assets/js/video_course/app.js"></script>
<script src="assets/js/directives/video_course.js"></script>
<script src="assets/js/services/video_services.js"></script>

这将给出喷油器模块的错误。问题出在哪里?如何以适当的方式管理这些依赖关系。

2 个答案:

答案 0 :(得分:2)

您的问题是您定义模块的方式。当所有这些指令已经在同一模块中时,您将指令作为依赖项添加到模块videoCourseApp。只有模块字定义的模块才能作为模块的依赖项注入。因此,尝试从模块defension中删除这些指令。

希望有所帮助。

答案 1 :(得分:0)

您的代码应该更像:

var videoCourseApp = angular.module('videocourse' , ['ngDragDrop']);

videoCourseApp.controller('video_course_add_question', ['$scope', '$timeout', '$compile', function($scope, $timeout, $compile){


}]);

videoCourseApp.service('incrementId', function(){
        var index = 4;
        this.getAndIncrement = function () {
        return index++;
    };
});

videoCourseApp.directive('addNewMsccOption', ['incrementId', function(incrementId){
    return{
        replace: true,
        restrict : 'C',
        template : '<li><input name="test" type="radio" ng-model="videoCourseQuestions.mcss_option"/><input ng-model="videoCourseOptions.Option{{newid}}" type="text"   class="option"  placeholder = "Enter your Option{{newid}}" />',
        link: function(scope,element,attribute){
            scope.newid = incrementId.getAndIncrement;
        }
    };
}]);

videoCourseApp.directive('mcssForm' ,function(){
    return{
        restrict : 'C',
        templateUrl : 'assets/template_blocks/mcss_form.html',
        link: function(scope,element,attribute){
        }
    };
});

注意在控制器和指令定义中设置依赖注入和缩小。