javascript - 在 AngularJS 中处理转换后的数据

标签 javascript angularjs

我有一个时间戳列表。我可以用 AngularJS 列出它们。但是我想将其列为日期字符串。这些日期字符串应该是可编辑的 - 完成后我也希望更新相关的时间戳。

我的第一个问题是:AngularJS 以不同格式(过滤器?)呈现项目并仍然具有双向数据绑定(bind)的方式是什么? (模块、指令、监听器?)

谢谢

最佳答案

如果你的可编辑数据是原始数据(时间戳),那么你shall go with filters .

但如果您希望它可以以日期字符串格式进行编辑,那么您需要创建一个指令来增加 ngModel+input,方法是添加自定义 $parsers$formatters .

其实很简单:

app.directive('dateFormat', function() {
  return {
    require: 'ngModel',
    link: function(scope, element, attr, ngModelCtrl) {
      ngModelCtrl.$formatters.unshift(function(valueFromModel) {
        // return how data will be shown in input
      });

      ngModelCtrl.$parsers.push(function(valueFromInput) {
        // return how data should be stored in model
      });
    }
  };
});

在您的 HTML 中:

<input type="text" ng-model="date" date-format />

该指令将需要 ngModelController,因此您可以增强其行为。

做了一个Plunker .当然,如果您需要简单的日期操作,请考虑在您的指令中以编程方式使用过滤器,这样您就不会重复已经实现的过滤器。我在 Plunker 中使用它,所以你可以看到如何使用。

关于javascript - 在 AngularJS 中处理转换后的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15718203/

相关文章:

javascript - 如何从 JavaScript 对象生成校验和?

javascript - 在属性中附加带有三引号的 HTML

javascript - JS Selectbox 函数的问题

css - 不能错开 ngAnimate 子动画

javascript - 仅当到达 if 语句时才显示 Tooltip

angularjs - 是否可以在没有 Web 服务器的情况下使用 ng-include?

angularjs - 如何在同一页面上呈现两个 angular.js View ?

javascript - 在 react 中进行函数调用之前如何设置状态?

javascript - 通过ajax发送blob数据

javascript - 动态更改配置设置 ng-grid