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-change的那样,它会随着您在输入上添加更改侦听器而工作。$('input').change(...)

考虑到用户体验和功能方面,简单地$scope.$watch('model', ...)在控制器中使用会更好、更容易。

但我仍然认为这取决于您将拥有多少输入。我认为即使是 100 多个输入也没有太大的区别,因为您只是比较字符串,我认为用户在键入时不会遇到延迟。

于 2015-06-27T12:25:11.410 回答
1

为什么不将数组绑定到输入元素的 ng-repeat?这样绑定将自动工作。

于 2015-06-27T12:27:47.327 回答
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 回答