Блок кода ниже ожидает тайм-аута, затем выполняет HTTP-запрос с обещанием, а затем изменяет переменную области Angular Material на основе ответа. Он вызывается во время с ng-change
в поле ввода. У меня также есть элемент с ng-hide="showStuff"
в моем HTML, и, очевидно, когда $scope.showStuff
становится ложным, я хочу, чтобы он сразу исчез. К сожалению, на самом деле он не исчезает, пока я не выберу что-нибудь еще в DOM.
Раньше я использовал промисы для изменения вещей в DOM, и они отлично работают. Почему DOM не обновляется сам по себе и как мне обойти это?
$scope.checkSomething = function() {
// Use a timeout to prevent a checks from going off too rapidly
if (queryTimeout) {
clearTimeout(queryTimeout);
}
queryTimeout = setTimeout(function() {
bluebird.bind({}).then(function() {
return makeHttpRequest();
}).then(function(res) {
$scope.showStuff = res.data.length > 0;
})
}, 500);
}
$http
? - person Pop-A-Stash   schedule 03.08.2018