我有一个控制器:
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;
}
}
没有服务器错误,我记录了响应,一切都很好,但我的视图没有渲染,因为我怀疑$scope.pageData
的属性未定义。
我如何解决这个问题?我希望在switch语句解决后加载视图。
答案 0 :(得分:1)
如果我能帮到你,你可以将逻辑与选择适当的服务和执行请求分开,如下所示:
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...
});
}