Mic*_*umo 6 javascript angularjs
我试图将一个过滤器注入我的控制器并使用它:
angular
.module('graduateCalculator', [])
.filter('slug', function() {
return function(input) {
if(input) {
return input.toLowerCase().replace(/[^a-z-]/g, '-');
}
};
}).controller('GraduateCalculatorController', ['$filter', app.graduateCalculator($filter)]);
Run Code Online (Sandbox Code Playgroud)
但是,我得到了上述错误.我显然做了一些非常错误的事情 - 对我来说不够明显.
Uncaught ReferenceError: $filter is not defined
Run Code Online (Sandbox Code Playgroud)
它可能与我的功能有关.它是这样写的:
var app = {
graduateCalculator: function($filter) {
window.console.log( $filter('slug')('A random looking string...') );
}
};
Run Code Online (Sandbox Code Playgroud)
帮助赞赏!
Bro*_*cco 15
第二个参数[module].controller是构造函数,不调用构造函数...
// change this...
.controller('GraduateCalculatorController', ['$filter', app.graduateCalculator($filter)]);
// to this...
.controller('GraduateCalculatorController', ['$filter', app.graduateCalculator]);
Run Code Online (Sandbox Code Playgroud)
你的控制器函数(你当前有一个函数调用,而不是回调函数)需要是一个需要$ scope(控制器需要$ scope)的函数,也包含$ filter.
controller('GraduateCalculatorController', ['$scope', '$filter', function($scope, $filter){<your code here>}]);
Run Code Online (Sandbox Code Playgroud)
但是,有两种方法可以使用您的过滤器.您可以注入$ filter并调用
$filter('slug')(inputStuff)
Run Code Online (Sandbox Code Playgroud)
或者你可以注入slugFilter并直接调用它
slugFilter(inputStuff)
Run Code Online (Sandbox Code Playgroud)
关于角度最常见的抱怨之一是错误消息,这似乎是这里的问题!
如果我对任何事情都不够清楚,请告诉我,我会尽力帮助.