Angularjs $http
と同じようにjQuery's $.ajax
にcontext
を設定できますか?
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");
}
});
どちらも同じ
$ httpはangular.jsスクリプトから参照されます
$ .ajaxはjqueryスクリプトから参照されます
$ httpはasync:false
をサポートしていません
$ .ajaxはasync:false
をサポートします
このようにangular.js
を使用してそれを行うことができます
$http.get('server.php').success(function(response) {
$scope.contacts = response.data;
}).error(function(error)
{
//some code
});
ただし、async: true,
はangular.js
ではサポートされていません。
非同期コールバックを停止する必要がある場合は、$.ajax
を使用する必要があります
詳細については、このディスカッションを参照してください: jquery $ .ajaxからangular $ http へ
編集:
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();
});
渡す関数でFunction.bind()
を使用するだけですpromise.then
は、必要なコンテキストを維持します。例えば:
return $http({
method: 'GET',
url:'server.php'
}).then(function(response) {
$scope.contacts = response.data;
}.bind(this));
ただし、コールバックがすべて操作要素であることに気付いています。Angularで実行する必要はありません。あなたがしようとしているがコールバックではできない特定のことはありますか?