Angularjs использует фабрику правильно
Мне было интересно, если вы могли бы помочь. У меня есть код ниже, который устанавливает задержку времени ожидания перед отправкой http-запроса. Часы привязаны к полю ввода. Это в настоящее время в моем контроллере, и это работает.
$scope.$watch('query.keyword',function($http){
var searchInput = document.getElementById('searchInput').value;
var minLength = 3;
var req;
if (timeout) {
clearTimeout(timeout);
}
timeout = setTimeout(function(){
var newValue = searchInput;
if(newValue !== null && newValue.length > minLength) {
window.alert(newValue);
req = {
method: 'SET',
url: ''
};
}
}, 3000);
return $http(req);
});
Теперь я хочу, чтобы это вызывало фабрика / сервис, а не перечисляло его в моем контроллере.
Затем я сделал это...
app.factory('sendSearchData', function($http) {
var searchInput = document.getElementById('searchInput').value;
var minLength = 3;
var req = null;
if (timeout) {
clearTimeout(timeout);
}
timeout = setTimeout(function(){
var newValue = searchInput;
if(newValue !== null && newValue.length > minLength) {
window.alert(newValue);
req = {
method: 'SET',
url: 'haha.php'
};
}
}, 3000);
return function() {
if($http !== null) {
return $http(req);
} else { return 0; }
};
});
Не уверен, что возврат верен, так как предыдущий возвращал ошибку HTTP null.
Поэтому, чтобы использовать его, я сделал несколько вариантов кода ниже в моем контроллере.
$scope.$watch('query.keyword', sendSearchData.success());
Но мне не повезло, и он отказывается от рендеринга. Кто-нибудь может помочь?