【问题标题】:How do I format data in a view in AngularJS?如何在 AngularJS 的视图中格式化数据?
【发布时间】:2013-11-15 15:14:10
【问题描述】:

<input type="text" ng-model="user.User.DateOfBirth"> 在我看来。 user.User.DateOfBirth 当前为 YYYYMMDD 格式,但我希望它在视图中显示为 mm/dd/yyyy 格式。是否可以仅将其转换为显示?

【问题讨论】:

标签: angularjs angularjs-view


【解决方案1】:

这也可以帮助你

http://jsfiddle.net/mikeeconroy/Hu9m2/1/

.filter('myFormatDateFilter',function(){
    return function(input){
        if(angular.isDefined(input)){
           if(input.length >= 8){
                input = input.slice(0,8);

                input = input.slice(4,6) + '/' + input.slice(6,8) + '/' + input.slice(0,4);
            }
        }
        return input;
    };
});

【讨论】:

    【解决方案2】:

    为了以正确的格式输出数据,请尝试过滤器(在您的情况下,日期过滤器:http://docs.angularjs.org/api/ng.filter:date

    嗯,输入是另一种情况。我猜你总是可以将该输入绑定到另一个属性,观察它并自己解析它,然后将它分配给你的真实模型......

    更多见解,您可以尝试以下方法:

    HTML:

    <input type="text" ng-model="myDateInput">
    

    在您的 JS 控制器中使用以下内容:

    $scope.$watch('myDateInput', function (newValue) {
        $scope.user.User.DateOfBirth = $filter('date')(newValue, 'yyyy-MM-dd'); // Or whatever format your real model should use
    });
    
    $scope.$watch('user.User.DateOfBirth', function (newValue) {
        $scope.myDateInput = $filter('date')(newValue, 'yyyy-MM-dd'); // Or whatever format your input should use
    });
    

    通过某种模式匹配(因此验证)或某种特殊日期输入/小部件强制用户使用某种输入格式可能会更好。

    【讨论】:

    • 我的user.User.DateOfBirth 不是有效的 JS 日期对象
    • 不一定是对象,也可以是字符串:取自 Angular 日期过滤器文档:Date to format either as Date object, milliseconds (string or number) or various ISO 8601 datetime string formats
    • 我得到:Expression 'user.User.DateOfBirth | date: 'medium'' is non-assignable. Element: &lt;input ng-model="user.User.DateOfBirth | date: 'medium'" type="text"&gt;
    • 不要将过滤器放在ng-model 指令中
    • 那我在输入框中怎么做呢?
    猜你喜欢
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 2015-04-29
    • 2020-10-12
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多