17

true または false を確認し、ng-true-value と ng-false-value を使用してチェックボックスで文字列を返すことができましたが、さらに、チェックボックスに整数を指定し、チェックされている場合は整数を返します。

セレクトボックスから値を取得するときと似ているはずです: http://jsfiddle.net/PuDRm/

しかし、チェックボックスで同じ考えを得ることができないようです: http://jsfiddle.net/PuDRm/1/

<input type="checkbox" ng-model="testc" ng-true-value="Yes" ng-false-value="No" ng-change="processtest()" /> Yes

私はまったくの初心者で、AngularJS を理解しようとしています。

4

6 に答える 6

9

モデルとチェックボックスの値に数値を使用するように設定したい場合は、カスタム ディレクティブを使用して、文字列を解析して整数に戻すことができます。

デモ: http://jsfiddle.net/qw5zS/

html

<input type="checkbox" ng-model="test" parse-int ng-true-value="1" ng-false-value="0" /> 

js

app.directive('parseInt', [function () {
    return {
        restrict: 'A',
        require: 'ngModel',
        link: function (scope, elem, attrs, controller) {
            controller.$formatters.push(function (modelValue) {
                console.log('model', modelValue, typeof modelValue);
                return '' + modelValue;
            });

            controller.$parsers.push(function (viewValue) {
                console.log('view', viewValue, typeof viewValue);
                return parseInt(viewValue,10);
            });
        }
    }
} ])

しかし、これはチェックボックスを使用する良い習慣ではないかもしれません。デフォルトの動作のままにしてブール値を使用し、必要に応じてビューをフォーマットする必要がありますが、データはきれいに保ちます。

于 2013-10-15T00:47:47.877 に答える
0

私がやったのは、コントローラーで if ステートメントを使用することだけでした。

例:

$scope.status = ($scope.status === 1 ? true : false);
于 2015-04-12T21:44:16.877 に答える