实现自定义实用程序,而不是`window.location.assign`

时间:2018-10-30 09:29:49

标签: javascript angularjs ecmascript-6 controller routing

我正在使用AngularJS,在控制器中,我有一个像这样的函数。

  ctrl.onClick = (id) => {
    window.location.assign(`#/services/${id}`);
  }

我想使用我们的自定义locationUtils之一。这是该代码:

export const redirectTo = (route) => {
  const { location } = window;
  location.href = `${location.origin}${route}`;
};

我正在将其导入控制器,并且路径正确。但是用我写的东西,重定向不起作用。

这是我的实现方式:

  ctrl.onBrokerClick = (id) => {
    redirectTo(`#/services/${id}`);
  }

我在这里到底在做什么错?有人可以帮我吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试history.pushState(null,null,'new_url_address')加载新的网址。

请按照本文档的历史记录api-https://developer.mozilla.org/en-US/docs/Web/API/History_API

答案 1 :(得分:0)

好的,在这里回答我自己的问题。调用redirectTo()时,它提供了前缀homepage。在我的函数中,代替这个:

ctrl.onBrokerClick = (id) => {
    redirectTo(`#/services/${id}`);
  }

我这样做是为了补充缺少的前缀:

ctrl.onBrokerClick = (id) => {
    redirectTo(`/homepage/#/services/${id}`);
  }

到目前为止,它不是那么优雅的解决方案,但是目前它可以工作。我将不得不看看@front_end_dev所说的话。