Angular UI-Router覆盖在子状态中解析

时间:2014-03-11 19:16:13

标签: javascript angularjs angular-ui-router

我遇到了这个问题,我在父母和家庭中有相同的解决功能。儿童状态 - 并且取决于儿童状态,我希望它具有不同的价值 不知何故,它不是覆盖它的实现,而只是从父状态获取行为。

.state('wines', {
    url: '/wines',
    templateUrl: 'partials/products/index',
    controller: 'cwProductsController',
    resolve: {
      merchandiseView: function() {
        return "featured";
      }
    }
  }).state('wines.featured', {
    url: "/featured",
    templateUrl: 'partials/products/index',
    controller: 'cwProductsController',
    resolve: {
      merchandiseView: function() {
        return "featured";
      }
    }
  }).state('wines.curatorsChoice', {
    url: "/curators-choice",
    templateUrl: 'partials/products/index',
    controller: 'cwProductsController',
    resolve: {
      merchandiseView: function() {
        return "curators-choice";
      }
    }
  }).state('wines.stillAvailable', {
    url: "/still-available",
    templateUrl: 'partials/products/index',
    controller: 'cwProductsController',
    resolve: {
      merchandiseView: function() {
        return "still-available";
      }
    }

  });

在这里,即使访问 wine / still-available ,它仍然会继续返回“特色”,我希望商品视图“仍然可用”。

这是我的控制者:

angular.module('clubwApp').controller('cwProductsController', [
  '$scope', 'cwProduct', '$stateParams', 'merchandiseView', function($scope, cwProduct, $stateParams, merchandiseView) {
    console.log(merchandiseView);
    $scope.wines = cwProduct.available();
    return $scope.merchandiseView = angular.copy(merchandiseView);
  }
]);

有没有办法,我怎么能覆盖这个?

2 个答案:

答案 0 :(得分:2)

  • 将特定数据附加到data州属性,而不是resolve
  • 在控制器初始化时,从$state.current.data注射剂中读取$state

答案 1 :(得分:0)

这显然是一个问题(直到0.2.15)。
这是一个解决这个问题的hacky解决方案: http://plnkr.co/edit/j1wCThlv1uczlX7d5cdg?p=preview resolve: {test: {this.data.someObject}}