2017-07-25 23 views
1

使用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)}; 
    }] 

enter image description here

我想我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> 
+0

'绑定' 可以整理成一个;绑定:{user:'<',timezones:'<'}可能是第二个覆盖第一个;还你在哪里嵌入在你的HTML? – rrd

+0

谢谢你指出,不知道为什么我这样做,但不幸的是,这不是问题。我的组件是我的整个html,并通过'ui-router''加载'' –

+0

@rrd,你是对的!请将它写为答案,我会将其标记为正确。愚蠢的错误代表我 –

回答

1

这是绑定的,第二个是覆盖第一:

bindings: { 
    user: '<', 
    timezones: '<' 
} 

这应该解决它:)

+0

再次感谢您的时间! –

+0

很高兴有帮助! – rrd