私のAngularアプリには、独自のスコープをbaseControllerに注入することで定義された関数にアクセスできるbaseController.js
クラスとクラスがあります。これにより、すべてのコントローラー間で機能を共有できます。exampleController.js
baseController
getDataFromUrl()
から関数を呼び出そうとする場合を除いて、これは機能していexampleController
ます。デバッグ中に、それが呼び出され、呼び出しの関数にgetDataFromUrl()
入ることがわかります。その時点で、それは逆シリアル化された JSON オブジェクト (この場合はオブジェクトの配列) であることがわかりますが、コードが最終的にの関数に戻ったとき、最終的に受け取るのは逆シリアル化されたオブジェクトではなく、生の HTTP 応答データ。.success()
$http.get()
data
exampleController
initArray()
data
baseController.js:
// Data retrieval function for all derived controllers
$scope.getDataFromUrl = function (url) {
return $http.get(url)
.success(function (data) {
return data;
})
.error(function () {
return null;
});
};
exampleController.js:
appModule.controller('exampleController', [
'$scope', '$controller', '$http', '$window', '$location', '$timeout',
function ($scope, $controller, $http, $window, $location, $timeout) {
var base = $controller('baseController', { $scope: $scope });
// Initiate an array of data
var initArray = function (data) {
$scope.sortedArray = sortDataByDate(data);
};
// Calling function in scope defined by base controller class
$scope.getDataFromUrl('resources/data').then(function (data) {
initArray(data);
});
}]);
がHTTP 応答としてdata
戻ってくるのはなぜですか? exampleController
デシリアライズされたJSONのままにしておきたい!