我有一个 Controller :
app.controller('myController', function ($scope, myService) {
$scope.pageData = {};
myService.promiseGetDataFromServer()
.then(function (response) {
$scope.pageData = response.data;
}, function (reason) {
// error has occurred.. etc...
});
}
到目前为止,一切正常。但是,我想根据一些确定性逻辑来填充 $scope.pageData
。我试过这个:
app.controller('myController', function ($scope, myService2, thing) {
$scope.pageData = {}
switch (thing)
{
case 'whatever':
myService2.promiseGetWhateverFromServer()
.then(function (response) {
$scope.pageData = response.data;
}, function (reason) {
// error has occurred.. etc...
});
break;
case 'something':
myService2.promiseGetSomethingFromServer()
.then(function (response) {
$scope.pageData = response.data;
}, function (reason) {
// error has occurred.. etc...
});
break;
}
}
没有服务器错误,我记录了响应,一切都很好,但我的 View 没有呈现,因为我怀疑 $scope.pageData
的属性未定义。
我该如何解决这个问题?我希望在 switch 语句解析后加载 View 。
最佳答案
如果我的理解正确,您可以将逻辑与选择适当的服务和执行请求分开,如下所示:
app.controller('myController', function ($scope, myService2, thing) {
$scope.pageData = {};
//here we select service
$scope.getDataForPageData = function(parameter){
var serviceToSelect;
switch (parameter)
{
case 'whatever':
serviceToSelect = myService1;
break;
case 'another'
serviceToSelect = myService2;
break;
}
return serviceToSelect;
}
//do request and assign $scope.pageData when resolved
$scope.getDataForPageData(thing).promiseGetSomethingFromServer()
.then(function (response) {
$scope.pageData = response.data;
}, function (reason) {
// error has occurred.. etc...
});
}
关于javascript - Angular : Asynchronous Promise in Switch Statement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30466475/