Угловое изменение ввода текстового поля JS - Смотреть

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>
Теги:
watch
angularjs-ng-change

3 ответа

1

Почему бы вам не привязать массив к ng-повторению входных элементов? Таким образом, привязка будет работать автоматически.

  • 0
    Да, они все связаны таким образом, я обновил ОП с кодом.
  • 0
    Возможно, вы хотели это: $ scope.GenderID = $ scope.Gender [0] .GenderID;
1

Учитывая аспект производительности, вам лучше использовать ng-change потому что он будет работать, поскольку вы добавили прослушиватель изменений на входе, например $('input').change(...) же, как вы упомянули.

Учитывая аспекты UX и функциональности, проще и проще просто использовать $scope.$watch('model',...) в контроллере.

Но все же я полагаю, что это зависит от того, сколько у вас будет ресурсов. Я думаю, что нет никакой большой разницы с даже 100+ входами, потому что вы просто сравниваете строки, я не думаю, что пользователь будет бороться с задержками по мере того, как он печатает.

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);
        }
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню