У меня в основном сложный набор вкладок с различными элементами управления вводами, но на этот раз не стоит беспокоиться об этом. Пусть теперь рассмотрим простую задачу ввода 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
...
};
Любая вероятность того, что тег является объектом или массивом? Если это так, вам нужно сделать глубокие $ watch, например:
$scope.$watch('tag', function () {
console.log('tag changed');
}, true);
Попробуйте это
контроллер
$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">
$watch
ними.
$scope.tag
. Очень странно.