0

最後に空のテキスト フィールドがあり、配列にバインドされたテキスト フィールドのリストがあります。空のテキスト フィールドへのテキスト入力を検出する必要があるため、ユーザーが値の入力を開始したときに別の空の要素を配列に追加して、ユーザーが常に別のフィールドで作業できるようにします。

$watch または ng-change を使用して変更を確認し、それに応じて要素を追加する必要がありますか? 私は $watch が常に起動していることを知っているので、それは悪いオプションかもしれません.

    <div ng-repeat="variation in productEditorModel.ColorVariations">
                                                <div class="form-inline">
                                                    <input type="text" id="txtVariationName" placeholder="Name" name="variationName" ng-model="variation.VariationName" required class="form-control">

                                                    </div>
                                            </div>
4

3 に答える 3

1

配列を入力要素の ng-repeat にバインドしてみませんか? このようにして、バインディングは自動的に機能します。

于 2015-06-27T12:27:47.327 に答える
1

パフォーマンスの面を考慮すると、あなたが言及したng-changeように、入力に変更リスナーを追加したように機能するため、より適切に使用する必要があります。$('input').change(...)

$scope.$watch('model', ...)UX と機能の側面を考慮すると、コントローラーで単純に使用する方が適切で簡単です。

しかし、それでも、入力の数に依存すると思います。文字列を比較するだけなので、100以上の入力でも大きな違いはないと思います。ユーザーが入力の遅延に苦労することはないと思います。

于 2015-06-27T12:25:11.410 に答える
0

ご意見ありがとうございます。ng-change が最も効果的でした。

    ng-change="update(variation,$index);"

    $scope.update = function (variation, index) {
        if (!angular.isUndefined(variation.VariationName)) {
            if (variation.VariationName.length > 0) {
                $scope.addVariation(variation.VariationTypeId);
            } else {
                $scope.productEditorModel.ColorVariations.splice(index, 1);
                $scope.removeVariation(index, variation.VariationTypeId);
            }
        } else {
            $scope.removeVariation(index, variation.VariationTypeId);
        }
    }
于 2015-06-27T17:08:34.463 に答える