如何在AngularJS中全局替换字符串?

时间:2018-02-14 04:47:40

标签: angularjs str-replace

我想在AngularJS中创建一个函数来替换页面上的所有值,但是我收到错误。

这是HTML:

<input type="text" ng-keyup="number_only(num_page)" ng-model="num_page"/>
<input type="text" ng-keyup="number_only(num_book)" ng-model="num_book"/>
<input type="text" ng-keyup="number_only(price)" ng-model="price"/>

这是我的剧本:

$scope.number_only= function(num_page){
    return $scope.num_page = num_page.replace(/[^0-9]/g, '');
}

1 个答案:

答案 0 :(得分:1)

在您的代码中,无论模型如何,num_page始终会更新。

您可以直接将模型的值分配给ng-keyup以按预期工作。

以下是工作示例。

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.num_page = null;
    $scope.num_book = null;
    $scope.price = null;
    
    $scope.number_only= function(num_page){
    return num_page.replace(/[^0-9]/g, '');
}
});
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="myCtrl">

Number of Page<input type="text" ng-keyup="num_page=number_only(num_page)" ng-model="num_page"/><br>
Number Of Book<input type="text" ng-keyup="num_book=number_only(num_book)" ng-model="num_book"/><br>
Price<input type="text" ng-keyup="price=number_only(price)" ng-model="price"/>
<br>
Number of Page: {{num_page}}
Number of Book: {{num_book}}
Price: {{price}}
</div>



</body>
</html>