我是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">
如何正确注入过滤器以便克服此错误?
答案 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')
...
}