在我的 Angular 应用程序中,我有一个baseController.js
类和一个类,它们可以通过将自己的范围注入 baseControllerexampleController.js
来访问定义的函数。baseController
这允许在所有控制器之间共享功能。
这是有效的,除非我尝试getDataFromUrl()
从exampleController
. 在调试时我可以看到它getDataFromUrl()
被调用了,它进入了调用的.success()
函数$http.get()
。那时我可以看到它data
是一个反序列化的 JSON 对象(在这种情况下,它是一个对象数组)但是当代码最终返回到它exampleController
的initArray()
函数时data
,它最终收到的不再是反序列化的对象,而是变成了原始 HTTP 响应数据。
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;
});
};
示例控制器.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);
});
}]);
为什么data
返回exampleController
为 HTTP 响应?我希望它保持为反序列化的 JSON!