ui-router使用"解决"在州定制财产

时间:2016-09-08 22:30:39

标签: angularjs angular-ui-router

我正在根据ui-router状态制作面包屑组件。所以这就是我所取得的成就。

$stateProvider.state('home', {
   // custom property
   breadcrumb: 'Home',
   // other properties
   // ... 
});

$stateProvider.state('home.profile', {
   breadcrumb: 'Profile',
   // ...
});

所以这很好用,当我进入' home.profile'州,我得到" Home / Profile"面包屑。但是如何显示动态数据呢?喜欢用户名。我喜欢这样的事情:

$stateProvider.state('home.profile', {
   resolve: {
      currentUser: ($http) => {
         return $http.get('current-user');
      }
   },

   // I would like to "inject" the resolved currentUser
   breadcrumb: (currentUser) => {
      return currentUser.username;
   }
});

我知道使用组件有一个$ resolve服务,你可以这样做:

<my-component user="$resolve.currentUser.username"></my-component>

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

对于您想要解析customData的用例不太确定,但是您可以将已解析的数据注入控制器。

$stateProvider.state('home.profile', {
   resolve: {
      currentUser: ($http) => {
         return $http.get('current-user');
      }
   },
});

并在您的控制器中:

angular.module('app')
  .controller('profileCtrl', ['$scope', 'currentUser', function($scope, currentUser) {

   // you can be sure the data will be here because resolve are resolved before controller is instantiated
    $scope.UserName = currentUser.username; 
  }]);

然后在您的视图中,它将非常直观:

<my-component user="UserName"></my-component> //depends how your directive is binded