Разница между ручным запуском события JavaScript и запуском события по умолчанию

0

Скажем, у меня есть флажок и текстовое поле. При щелчке по флажку я устанавливаю некоторое значение в textBox.

Угловая реализация

<input type="checkbox" ng-model="filterPrivateDocModel" ng-click="filterPrivateDoc(filterPrivateDocModel)">
<input st-search="target" ng-model="text" ng-change="setVal()"/>
$scope.filterPrivateDoc=function(val) {
  if (val) {
    angular.element('[ng-model="text"]').change();
  }
}

$scope.setVal=function() {
  angular.element('[ng-model="text"]').focus();
  $scope.text = 'Private';
}

Он правильно устанавливает значение textBox при щелчке checkBox со значением "Private", но он не фильтрует значение, хотя я пытаюсь вызвать событие jchange в jchange (с помощью изменения ng-изменения в угловом) вручную, но все же он не Работа.

Но в тот момент, когда я начинаю вводить текст в текстовом поле любым символом, он запускает setValue (событие onchange javascript) и фильтрует данные. Зачем??

Поэтому мой вопрос:

(1) В чем разница между ручным вызовом события onchange javascript и триггером по умолчанию?

(2) И как я могу заставить его работать в моем случае, не набрав ничего в текстовом поле, и фильтр начнет работать.

1 ответ

0

Простой ответ: вы этого не делаете. Вся идея заключается в том, что вы полностью разделяете модель данных, управляющий код и представление. Ваше решение должно позволить структуре (угловой) иметь дело с обновлением представления при изменении модели, поэтому используйте модель для запуска обновления.

<input type="checkbox" ng-model="filterPrivateDocModel" ng-click="filterPrivateDoc(filterPrivateDocModel)">
<input st-search="target" ng-model="text" ng-change="setVal()"/>

$scope.filterPrivateDoc=function(val) {
  if (val) {
    setTextVal($scope);
  }
}

$scope.setVal=function() {
  angular.element('[ng-model="text"]').focus();
  setTextVal($scope);
}

function setTextVal($scope) {
  $scope.text = 'Private';
}
  • 1
    Это не работает

Ещё вопросы

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