【问题标题】:Angularjs + Requirejs error with filterAngularjs + Requirejs 过滤器错误
【发布时间】:2014-05-03 06:09:29
【问题描述】:

我尝试在我的视图中添加带有 requirejs 的 angularjs 过滤器,但收到错误消息:

错误:$injector:unpr 未知提供者

http://docs.angularjs.org/error/$injector/unpr?p0=localizationFilterProvider%20%3C-%20localizationFilter

怎么了?

我的文件:

index.html

<!DOCTYPE html>
<html>
    <head>
        <script data-main="/static/js/application/main" src="/static/js/libs/require.min.js"></script>
    </head>

    <body>
        <div class="page" ng-view></div>
    </body>
</html>

app.js

'use strict';                                                                                            

define(                                                                                                  
    [                                                                                                    
        'angularAMD',                                                                                    
        'angular-route',                                                                                 
        'angular-animate'                                                                                
    ],                                                                                                   
function (angularAMD) {                                                                                  

    var app = angular.module('FilmOrder', ['ngRoute', 'ngAnimate']);                                     

    app.config(['$routeProvider', function($routeProvider) {                                             

        $routeProvider                                                                                   
            .when('/',                                                                                   
                angularAMD.route({                                                                       
                    templateUrl: 'static/js/application/views/success.html',                             
                    controllerUrl: 'application/controllers/Success',                                    
                    controller: 'Success'                                                                
                })                                                                                       
            )                                                                                            

            .otherwise({redirectTo: '/'});                                                               
    }]);                                                                                                 

    angularAMD.bootstrap(app);                                                                           

    return app;                                                                                          
});             

ma​​in.js

require.config({

    baseUrl: "static/js",

    paths: {
        'angular':          'libs/angular.min',
        'angular-route':    'libs/angular-route.min',
        'angular-animate':  'libs/angular-animate.min',
        'angularAMD':       'libs/angularAMD.min'
    },

    shim: {
        'angularAMD': ['angular'],
        'angular-route': ['angular'],
        'angular-animate': ['angular']
    },

    deps: ['application/app']
});

views/success.html

<div class="success">
    <div class="success_head">
        {{"Пожалуйста, убедитесь в правильности указанных данных." | localization:'index'}}
    </div>
</div>

filters/localization.js

'use strict'                                           

define(['application/app'], function (app) {           

    app.filter('localization', function () {              
        return 'test';                                       
    });                                                   
});        

控制器/Success.js

define(                                                                                   
    [                                                                                     
        'application/app',                                                                
        'application/filters/localization',                                               
        'application/services/Application'                                                
    ],                                                                                    
    function (app) {                                                                      

    'use strict';                                                                            
    app.register.controller('Success', function ($scope) {                                            

        var Success = {};                                                                       
        $scope.Success = Success;                                                               
    });                                                                                      
});                                                                                       

【问题讨论】:

    标签: angularjs requirejs


    【解决方案1】:

    您的过滤器在引导后被调用,因此您应该使用 app.register:

    filters/localization.js

    define(['application/app'], function (app) {           
        'use strict'
        app.register.filter('localization', function () {              
            return 'test';                                       
        });                                                   
    });
    

    如果这没有帮助,请设置一个 plunker,我会尝试进一步提供帮助。

    【讨论】:

    • 非常感谢您的帮助!一切都很好!
    • 选择正确的答案怎么样?这将有助于其他人遇到您的问题。
    猜你喜欢
    • 2019-08-11
    • 2015-10-09
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 2020-01-29
    • 1970-01-01
    • 2013-08-23
    相关资源
    最近更新 更多