在angularjs重复器中将字符串转换为日期输入日期

3

我有一个带有表格行的重复器,其中包含日期,可以进行编辑。问题是我无法使用字符串而不是日期对象设置模型,并且不可能在日期输入上应用过滤器。这里有什么解决方法呢?

谢谢

<tr data-ng-repeat="item in collection">
    <td data-ng-bind="item.name"></td>
    <td data-ng-bind="item.sharedDate | date:'MMMM dd, yyyy'"></td>
    <td>
        <span data-ng-bind="item.note"></span>
        <textarea data-ng-model="item.note"></textarea>
    </td>
    <td>
        <span data-ng-bind="item.expiryDate | date:'MMMM dd, yyyy'"></span>
        <input type="date" class="form-control" id="expiryDate" data-ng-model="(item.expiryDate | date:'MM/dd/yyyy')">
    </td>


可以将其转换为Date对象吗?例如,$scope.yourDateThing = new Date(your date val) - scniro
循环使用ngRepeat在视图中,想法是不必在控制器上进行转换。谢谢。 - andy_314
1个回答

2

data-ng-model 是一种双向数据绑定,不能使用表达式。它必须引用作用域变量,以便ngModel 可以读写。

如果item.expiryDate的值不符合 ngModel 的正确格式,则必须在控制器中对其进行预处理,然后再在模板中使用。

您需要先在控制器或指令中执行以下操作:

_.each($scope.collection,function(item) { item.expiryDate = $filter('date')('MM/dd/yyyy'));

现在你的模板中可以使用ngModel将该值作为双向数据绑定。

<input type="date" class="form-control" id="expiryDate" data-ng-model="item.expiryDate">

谢谢@Mathew。我本来想避免在控制器上循环对象,但看起来这是我必须要做的。 - andy_314

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接