6

入力を取得してFirebaseデータベースに保存するためにAngularFireを使用しています。現在、サービスの価格を入力するための入力があります (古いブラウザーで問題が発生しないようにするため、「数値」ではなく「テキスト」の入力タイプを使用しています)。

<p><input type="text" placeholder="Enter your monthly price here" ng-model="priceMonthly" required/></p>

ただし、フォームの送信時に(更新機能を使用して)これをFirebaseに書き込むと、値$scope.priceMonthlyは整数ではなく文字列として書き込まれます。この値を文字列ではなく整数として記述する最良の方法は何ですか?

4

3 に答える 3

1

それを整数に変換するだけです:

var priceMonthly = parseInt($scope.priceMonthly, 10);
于 2013-11-10T20:09:55.377 に答える
1

「数値」以外の入力タイプ (テキスト、範囲など) の場合、入力に$parserを追加すると、その値がキャストされます。

angular.module('exampleApp', [])

.controller('ExampleCtrl', function ($scope) {
    $scope.filter = {
        number: 10
    };
})

.directive('castToInteger', function () {
    return {
        restrict: 'A',
        require: 'ngModel',
        link: function(scope, element, attrs, ngModel) {
            ngModel.$parsers.unshift(function(value) {
                return parseInt(value, 10);
            });
        }
    };
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="exampleApp">
  <div ng-controller="ExampleCtrl">
      <input type="range" min="1" max="100" ng-model="filter.number" cast-to-integer="true" />
      <p>{{filter | json}}</p>
  </div>
</div>

トピックに関する別の回答: https://stackoverflow.com/a/16187142/818862

于 2016-07-14T10:54:29.383 に答える