我正在努力使用一个angularjs控制器,它不能为视图提供一些数据,我不明白为什么。
这是路线配置:
.when('/settings', {
templateUrl: 'views/settings.html',
controller: 'SettingsController',
access: {
authorizedRoles: [USER_ROLES.user]
}
我有一个控制器:
jhipsterApp.controller('SettingsController', function ($scope, Account,Countries) {
$scope.success = null;
$scope.error = null;
$scope.settingsAccount = Account.get();
$scope.countries = Countries.get();
$scope.save = function () {
$scope.success = null;
$scope.error = null;
$scope.errorEmailExists = null;
Account.save($scope.settingsAccount,
function (value, responseHeaders) {
$scope.error = null;
$scope.success = 'OK';
$scope.settingsAccount = Account.get();
},
function (httpResponse) {
if (httpResponse.status === 400 && httpResponse.data === "e-mail address already in use") {
$scope.errorEmailExists = "ERROR";
} else {
$scope.error = "ERROR";
}
});
};
});
和工厂:
jhipsterApp.factory('Account', function ($resource) {
return $resource('app/rest/account', {}, {
});
});
jhipsterApp.factory('Countries', function ($resource,$http) {
// return $resource('app/rest/countries', {}, { });
return{
get: function() {
var promise = $http.get('app/rest/countries').then(function(response){
return response.data;
});
return promise;
}
}
});
以下是我的观点:
{{settingsAccount}}// {{countries}}
我想显示由工厂检索的settingsAccount和国家/地区。 在浏览器中,我有以下结果:
{"login":"user","password":null,"firstName":null,"lastName":"User","email":null,"langKey":"en","roles":["ROLE_USER"],"country":""}// {}
我们可以看到settingsAccount已设置但没有国家/地区。我不明白为什么?
当我查看F12 Chrome工具时,我可以看到工厂提出的两个请求:
为什么国家/地区的数据在视图中不可用?
答案 0 :(得分:1)
这是因为您的Countries.Get正在返回承诺而不是国家数组(并且也是异步的),您需要在承诺完成后填充国家/地区。
Countries.get().then(function (countries) {
$scope.countries = countries;
});