如何在404维护以前的状态参数?

时间:2016-11-30 05:09:02

标签: javascript angularjs angular-ui-router

我是Angular的新手,我需要一些router-ui包的帮助。

我的几个州都是由动态值组成的:

.state('state-name', {
  url: `${dynamicValue}/state-name`,
  abstract: true,
  template: '<ui-view/>',
  data: {
    layout: {
      footer: false
    }
  },
  resolve: {
    context: resolveContext
  },
});

此值通过用户从中选择选项的单选按钮传递。这一切都很好,但我遇到的问题是,如果用户在选择值后输入了错误的URL,它会将它们重定向回第一个无线电选项,而不是维持他们的选择。这是由于我设置的条件,如果用户没有选择选项。

E.g。

可用选项:

1. 1234
2. 5678

如果我选择:

5678

它会生成以下网址:

domain.com/5678/state-name

如果我触发404:

domain.com/5678/state-name/xyxyxyxyxxy

重定向到:

domain.com/1234/state-name

而不是:

domain.com/5678/state-name/

我试图修改otherwise()功能,但没有太多运气。如何保持之前选择的选项,在选择其他选项之前,该选项是永久性的?修改控制器$onInit()函数中的状态会不会更好?

1 个答案:

答案 0 :(得分:0)

尝试使用此方法来解决此问题。

.state('parentState', {
  url: `:id/state-name`,
  abstract: true,
  template: '<ui-view/>',
  data: {
    layout: {
      footer: false
    }
  },
  resolve: {
    context: resolveContext
  },
}).state('childState', {
  url: `:id/state-name/xyxyxy`,
  abstract: true,
  template: '<ui-view/>',
  data: {
    layout: {
      footer: false
    }
  },
  resolve: {
    context: resolveContext
  },
});

所以,第一个选项将采用&#39; id&#39;参数动态。

您可以通过将id参数传递给ui-sref中的州名来调用它。让我们说

<a ui-sref="childState({'id':5678})"> 
    <input type="radio" value="5678" />
</a>

您可以为其他人创建或使用ng-repeat调用它。

我希望它有所帮助。