我是Angular的新手,所以如果您问一个问题:“为什么不……?” 答案是...因为我不知道我能做到。
让工厂进行API调用,然后将该工厂注入到具有整个页面范围的父控制器中。然后将子控制器嵌套并从父控制器继承。
这是我到目前为止所拥有的。我可能不在这里,如果是这种情况,请告诉我。我仅在此方面进行工作,没有任何帮助,因此欢迎任何帮助。
谢谢你。
var app = angular.module('myApp',[]);
app.factory('myFactory', function($http){
var MyFactory = function(){};
MyFactory.getParams = function(){
return $http.get('/getparameters');
.success(function(data){
var roomname = data.roomname;
})
MyFactory.getRoom(roomname);
};
MyFactory.getRoom = function(room){
return $http.get('/my/api/' + room);
};
});
app.controller('RoomCtrl', function($scope, myFactory){
$scope.data = myFactory;
});
您不需要使用资源,需要使用promise。编辑我试图让你更清楚
app.factory('apicall', ['$q','$http',function($q, $http){
function getRoom(options){
var promise = $http.get(options.paramUrl)
.success(function(data){
//handle your error
return $http.get(options.roomUrl + data.roomname);
})
.error(function(msg){
return $q.when(msg)
})
return promise;
}
return {getRoom:getRoom};
}])
如果您想在您想去的地方致电工厂
app.controller('RoomCtrl', ['$scope','apicall',function($scope, apicall){
var options = {
paramUrl:'/getparameters',
roomUrl:'/my/api/'
}
apicall.getRoom.all(function(result){
$scope.data = result;
})
}]);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句