用。。。来代替 。在使用Angular 1绑定到属性的输入字段中

时间:2016-12-20 20:25:14

标签: angularjs angular-ngmodel angularjs-filter angularjs-ng-model

我有一个应该包含数字的输入字段。 它绑定到一个对象属性。 我希望输入为4,5的输入在模型和视图中自动转换为4.5。

HTML:

<input data-ng-model="productContent(product.Id).Org" value="{{productContent(product.Id).Org | replaceComma}}" />

控制:

$scope.productContent = function (prodId) {
    var content = $.grep($scope.productsContent, function (el) { return el.ProdId === prodId });
    return content[0];}  

过滤

app.filter('replaceComma', function () {
            return function (val) {
                return (typeof val) == "string" ? val.toString().trim().replace(",", ".") : val
            };
        }); 

结果:

当我输入数字时,首先模型(productContent)检索正确的对象。然后调用过滤器代码并返回正确转换的字符串。我希望模型和视图都更新为过滤值,但两者都使用未过滤的值进行更新。我做错了什么?

1 个答案:

答案 0 :(得分:0)

我过去遇到过同样的问题,但我没有创建自己的过滤器,而是采用了不同的路径,找到了可以使用的东西。

angular-input-mask由assisrafael为我们最喜​​欢的角度扩展之一:

https://github.com/assisrafael/angular-input-masks

示例:

http://assisrafael.github.io/angular-input-masks/

由于作者已经编写了文档,我不想对其进行广泛的讨论并在将来过时。作为快速参考,请查找ui-number-mask

也许这不是你问题的直接答案,因为它不是用句号替换逗号,而是让你输入小数。

另外,您可以使用ui-hide-group-sep

来取消数千个分隔符

我希望这会有所帮助,否则请发表评论,我将很乐意继续为您提供帮助!

-Helvio