$ watch или проблема с привязкой к модели?

0

У меня в основном сложный набор вкладок с различными элементами управления вводами, но на этот раз не стоит беспокоиться об этом. Пусть теперь рассмотрим простую задачу ввода wtch, с которой я сталкиваюсь.

Например:

<input type="text" placeholder="Associate some tags please" data-ng-model="tag" data-ng-maxlength="250">

Я пытаюсь обнаружить, если пользователь набрал что-то в свой ввод:

$scope.$watch('tag', function () {
//$scope.$watchCollection('tag', function () {
    console.log('tag changed');
});

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

Является ли случай ng-model не является обязательным правильно или это, что я не $watch правильно ИНГИ это?

Также после того, как я выполнил операцию сохранения, я попытаюсь очистить то, что пользователь вводил для тега:

$scope.tag = '';

Но это не работает по какой-то причине, как будто $scope.tag не существует.

PS: Когда я говорю операцию сохранения, я фактически выполняю array.push() в объект, который позже будет сохранен службой.

Например:

$scope.checkSaveTag = function (tag) {
    ...
    // checked for duplicate tag beforehand
    $scope.myForm.Tags.push(tagObj); // complicated form object
    $scope.tag = ''; // tag input control
    ...
};
Теги:

2 ответа

1
Лучший ответ

Любая вероятность того, что тег является объектом или массивом? Если это так, вам нужно сделать глубокие $ watch, например:

$scope.$watch('tag', function () {
    console.log('tag changed');
}, true);
  • 1
    Почему ты умер, Джон Сноу ?? : '(
  • 0
    @JonShow Я тоже это попробовал, но ничего не изменилось. Казалось бы, я не могу прочитать мою модель из моего контроллера $scope.tag . Очень странно.
Показать ещё 4 комментария
1

Попробуйте это

контроллер

$scope.form={
 tag:''
}

$scope.$watch("form.tag",function(newVal,oldVal){
  console.log(newVal);
})

Html

<input type="text" placeholder="Associate some tags please" data-ng-model="form.tag" data-ng-maxlength="250">
  • 0
    Извини, приятель, но @JonShow немного опередил тебя. Но вы оба абсолютно правы. Инкапсулируя количество входных данных в свободной форме, с которыми у меня возникли проблемы, в объект области видимости, я могу $watch ними.

Ещё вопросы

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