使用ui-router
领域,它呈现之前,像这样我解决数据所以它是提供给我的观点:
.state('app.userprofile', {
url: '/userprofile',
component: 'user',
resolve: {
user: ['userService', function(userService) {
return userService.fetchUser();
}],
timezones: ['timezoneService', function(timezoneService){
return timezoneService.fetchUsaTimeZones();
}]
}
})
}]);
如果我登录到从控制台我state
,它显示了响应:
resolve: {
user: ['userService', function(userService) {
return userService.fetchUser().then(function(response){console.log(response)};
}]
我想我user-profile.htm
内填充字段,在user component
中指定,使用默认控制器参考$ctrl
。我在整个应用程序中都使用了这个功能,但由于某种原因,在此状态下,它无法完成此操作。
问题
为什么我的领域无法加载由模型提供的数据?
app.component('user', {
bindings: { user: '<' },
bindings: { timezones: '<' },
templateUrl: 'p3sweb/app/components/user/views/user-profile.htm',
controller: ['userService', 'timezoneService', function(userService, timezoneService) {
var vm = this;
//functinality for updating user
}]
});
app.factory('userService', function($http, $q) {
var factory = {};
var REST_SERVICE_URI = 'http://localhost:8080/p3sweb/rest-user/';
factory.fetchUser = function() {
var deferred = $q.defer();
$http.get(REST_SERVICE_URI)
.then(
function (response) {
deferred.resolve(response.data);
},
function(errResponse){
console.error('Error while fetching user');
deferred.reject(errResponse);
}
);
return deferred.promise;
}
return factory;
});
<form action="#" method="POST" name="userProfileForm">
<div>
<legend >User Info</legend>
<div class="form-group row">
<label for="emailAddress">Email address</label>
<div>
<input type="email" name="emailAddress" ng-model="$ctrl.user.emailAddress">
</div>
</div>
</div>
</form>
'绑定' 可以整理成一个;绑定:{user:'<',timezones:'<'}可能是第二个覆盖第一个;还你在哪里嵌入 在你的HTML? –
rrd
谢谢你指出,不知道为什么我这样做,但不幸的是,这不是问题。我的组件是我的整个html,并通过'ui-router''加载'' –
@rrd,你是对的!请将它写为答案,我会将其标记为正确。愚蠢的错误代表我 –