Angular js自定义过滤器未定义

时间:2015-02-26 07:25:02

标签: javascript angularjs

我是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];
        }
    }

}

任何解决方案?

1 个答案:

答案 0 :(得分:3)

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

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

function monthName () { ... }