获取错误:$ injector:unpr,未知提供者,myFilterFilterProvider

时间:2015-08-11 19:13:38

标签: angularjs angularjs-directive angularjs-filter angularjs-factory

我是angularjs的新手,我在设置模块时遇到了问题。我之前只使用控制器和过滤器就可以使用这个模块。由于我添加了factory指令,因此在调用任何内容之前,我在页面加载时遇到Error $injector:unpr Unknown Provider错误,Unknown provider: myFilterProvider。我尝试按照文档中的步骤操作,但我无法理解。过滤器在视图之前工作正常,我的控制器不使用它,但我将它添加到依赖项中。我只在控制器中使用工厂。这是我的设置:

angular.module('my-module', [])

.controller('my-app', function($scope, $http, $q, myFactory, myFilter) { ... }

.filter('myFilter', function() { ... }

.factory('myFactory', ['$http', '$scope', function(){
}]);

最重要的是:

<div ng-controller="my-app">

如何正确注入过滤器以便克服此错误?

1 个答案:

答案 0 :(得分:3)

要在控制器中使用过滤器,请从

更新代码
$('#login').click(function(e)
        {
          e.preventDefault();

          $("#buttons").hide();
          $("#progress").show();
          var email=$("#email").val();
          var password=$("#password").val();
          var dataString = 'email='+email+'&UserPW='+password;
          if($.trim(email).length>0 && $.trim(password).length>0)
          {
            $.ajax({
            type: "POST",
            url: "includes/php/ajaxLogin.php",
            data: dataString,
            cache: false,
            beforeSend: function(){
              $("#buttons").hide();
              $("#progress").show();
            ;},
            success: function(data){
              if(data.d)
              {
                console.log(data.d);
                if (data.d == "client/staff")
                {
                  $("#clientStaffToggleButtons").show();
                }
                if (data.d == "staff")
                {
                  $("body").load("staff/dashboard.php").hide().fadeIn(1500).delay(6000);
                }
                if (data.d == "client")
                {
                  $("body").load("myevent/dashboard.php").hide().fadeIn(1500).delay(6000);
                }
                if (data.d == "noEmail")
                {
                    $("#buttons").show();
                    $("#progress").hide();
                    //Shake animation effect.
                    $('#formLogin').shake();
                    $("#signInSubmit").val('Sign In')
                    $("#error").html("<span style='color:#cc0000'>Error:</span> Invalid username and password. ");
                }
                if (data.d == "noPW")
                {
                    $("#buttons").show();
                    $("#progress").hide();
                    //Shake animation effect.
                    $('#formLogin').shake();
                    $("#signInSubmit").val('Sign In')
                    $("#error").html("<span style='color:#cc0000'>Error:</span> Invalid username and password. ");
                }
              }
            }
          });
         }

.controller('my-app', function($scope, $http, $q, myFactory, myFilter) { ... }

此外,如果必须将任何参数传递给过滤器,则可以将控制器中的代码更新为

.controller('my-app', function($scope, $http, $q, myFactory, $filter) {
     $filter('myFilter')
     ...
}