Angularjs $http VS jquery $.ajax
Можно ли установить context
в Angularjs $http
так же, как мы можем это сделать в jQuery $.ajax
?
define([
'app'
], function(app) {
app.controller("controller1", function($scope, $route, $http) {
return $http({
method: 'GET',
url: 'server.php'
}).then(function(response) {
$scope.contacts = response.data;
});
});
});
Кроме того, в jQuery $.ajax
есть больше обратных вызовов, например .done
, .promise
, которые я могу использовать для управления context
, как показано ниже, интересно, могу ли я сделать то же самое в Angularjs
$.ajax({
type: "GET",
dataType: "HTML",
url: 'server.php',
context: $("#container"),
async: true,
beforeSend: function() {
$(this).html('loading...');
},
success: function (returndata, status, jqxhr) {
$(this).html(returndata).hide().fadeIn();
},
}).fail(function() {
alert("error");
}).done(function(returndata) {
},
.always(function() {
alert("complete");
}
});
Ответы
Ответ 1
Оба одинаковы
$http ссылается от angular.js script
$. ajax ссылается на jquery script
Вы можете сделать это, используя angular.js
таким образом
$http.get('server.php').success(function(response) {
$scope.contacts = response.data;
}).error(function(error)
{
//some code
});
но async: true,
не поддерживается в angular.js
.
Если вам нужно остановить асинхронный обратный вызов, вы должны использовать $.ajax
way
Подробнее см. в этом обсуждении: от jquery $.ajax до angular $http
Edit:
Как показать скрыть в angular js
<div ng-show="IsShow">xx</div>
$http.get('server.php').success(function(response) {
$scope.contacts = response.data;
$scope.IsShow=true;
$scope.$apply();
}).error(function(error)
{
$scope.IsShow=false;
$scope.$apply();
});
Ответ 2
Просто используйте Function.bind()
для функции, которой вы передаете promise.then
, чтобы поддерживать необходимый контекст. Например:
return $http({
method: 'GET',
url:'server.php'
}).then(function(response) {
$scope.contacts = response.data;
}.bind(this));
Тем не менее, я замечаю, что ваши обратные вызовы - все манипулирующие элементы - то, что вам не нужно делать в Angular. Есть ли что-то конкретное, что вы пытаетесь сделать, но неспособное с обратным вызовом?