Angular js自定义过滤器未定义

Angular js custom filter undefined

本文关键字:未定义 过滤器 自定义 js Angular      更新时间:2024-06-03

我是Angular JS的新手,正在使用"出生日期中的月份"选项的自定义过滤器。

函数monthName已在控制器中定义。

当我尝试运行文件时出现错误:-

Uncaught ReferenceError: monthName is not defined

HTML:-

<select ng-model="main.userdobmonth" ng-change="main.getMonthDays()">
    <option ng-selected="{{$index+1==main.userdobmonth}}" value="{{$index+1}}" 
            ng-repeat="a in main.rangeDate(12) track by $index">{{$index+1 | monthName}}</option>
</select>

我的控制器代码:-

angular.module('HC', ['ngAnimate'])
    .controller('MainController', MainController)
    .filter('monthName', monthName);
// Inject dependencies
MainController.$inject = ['U', 'M', 'S', '$filter', '$upload', '$timeout'];
function MainController(U, M, S, $filter, $upload, $scope, $timeout) {
    // ....
    function monthName() {
        return function (monthNumber) { //1 = January
            var monthNames = ['January', 'February', 'March', 'April', 'May', 'June',
                'July', 'August', 'September', 'October', 'November', 'December'];
            return monthNames[monthNumber - 1];
        }
    }
}

有什么解决方案吗?

您在MainController内部定义了monthName。因此,它是一个局部变量,在您尝试使用它的外部无法访问。解决方案是将它移到外部。

function MainController (U, M, S, $filter, $upload, $scope, $timeout) { ... }
function monthName () { ... }