javascript - Angular js自定义过滤器未定义

标签 javascript angularjs

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

monthName 函数已在 Controller 中定义。

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

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>

我的 Controller 代码:-

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 () { ... }

关于javascript - Angular js自定义过滤器未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28736649/

相关文章:

AngularJs http请求 header 没有改变

javascript - 使用 javascript 动态添加 <td> 名称不起作用,而添加 id 有效

javascript - 为什么不工作? Onclick JavaScript

angularjs - AngularJS浏览器缓存问题

javascript - 如何在控制台中获取特定的 Controller 范围列表 - angularjs?

javascript - 检查 Angular 形式在 Controller 中是否有效

angularjs - 当我添加的类中有一个连字符时,我无法让 ng-class 工作。

javascript - 如何修复这个业余的 jQuery/Masonry/Infinite Scroll 代码?

javascript - 将 html 数据传递到 Bootstrap 模式内的表单

javascript - 将控制权从 View 传递回 Backbone 路由器?