,爲提前感謝,請閱讀我的文章。Angularjs數據爲異步服務,範圍爲
我有一個服務,像這樣:
angular.module('myApp.services')
.factory('myService', function($http, $q) {
var myService = {
getId: function() {
var defer = $q.defer();
$http.get('http://xxxxxxxxxxxxxxxxxx/id/')
.success(function(data) {
defer.resolve(data);
})
.error(function(data) {
defer.reject(data);
});
return defer.promise;
},
begin : function(jsonBegin) {
var defer = $q.defer();
$http.post('http://xxxxxxxxxxxxxxxxxxxxxxx/begin/?format=json', jsonBegin)
.success(function(data) {
defer.resolve(data);
})
.error(function(data) {
defer.reject(data);
});
return defer.promise;
}
};
return myService;
});
父控制器(正常工作):
angular.module('myApp.controllers')
.controller('controllerA', function($scope, myService) {
myService.getId()
.then(function(data) {
$scope.bID = data.bID;
});
});
而且孩子控制器:
angular.module('myApp.controllers')
.controller('controllerB', function($scope) {
console.log($scope.$parent.bID);
});
的價值的console.log對於BID是不確定的,你知道爲什麼嗎?我通過myService服務在父控制器中設置該變量。我想我的問題是由於異步調用,但我不確定。
謝謝。
是的,你的猜測是正確的..但你想要做什麼? –
是否metaApiService與myService相同?你是否想要在兩個地方改變它一樣? – lintmouse
當調用console.log時,請求不是從服務器端口到達的。如果(metaApiService == myService)你的代碼很好。 – chfumero