@ledsun blog

無味の味は佳境に入らざればすなわち知れず

AngularJSの$httpの置き換え

AngularJSには$httpと言う名前のHttpClientが入っています。 どうせjQuery.ajaxのラッパーだろうと思って、次の感じでjQuery.ajaxに置き換えました。 取ってきた値が上手く反映出来ませんでした。

jQuery.ajax({
  type: "get",
  url: "/books/100",
  dataType: "json",
  success: (data) => $scope.data = data
})

次のような感じで、$scopeへの反映をAngularJSに伝えるために、$apply()でくくって上げれば反映されました。

jQuery.ajax({
  type: "get",
  url: "/books/100",
  dataType: "json",
  success: (data) => $scope.$apply(() => $scope.data = data)
})

言われて見ればそういうのがあったような記憶があります。 あとjQuery.ajaxはデフォルトではapplication/x-www-form-urlencodedで通信するので必要に応じて、contentType: "application/json”とかdataType: "json"とかつける必要があるようです。jQueryのバージョンに依存するかもしれません。

意外とかゆいところに手が届く便利な奴ですね、$http

参考

AngularJS and scope.$apply(日本語訳) - Qiita