【发布时间】:2019-09-02 19:44:33
【问题描述】:
我想在单击按钮并执行一些代码时添加一个额外的查询参数。当作为右键单击菜单的一部分执行时,完全相同的代码对我来说效果很好。但是当我尝试使用按钮单击来执行此操作时,它不起作用(例如,我可以看到 URL 已更改,但在所有 angularjs 内部代码运行后,它会返回到以前的值,并且未附加我的额外搜索参数)。
这是我正在尝试的代码(我尝试添加最后一行,但没有改变结果):
addParameterToUrl(paramName, value) {
const urlParams = new URLSearchParams(window.location.search);
urlParams.set(paramName, value);
const newQuery = `${window.location.pathname}?${urlParams.toString()}`;
history.pushState(null, "", newQuery);
SW.serviceLoader.Location.path(newQuery, false);
}
有什么方法可以通过点击按钮(输入类型=“按钮”)来更改网址?
在阅读了几个线程和文档并尝试了许多不同的方法后,我终于明白了:
.finally(() => {
Spinner.stopSpinner("updateBooking");
this.onReload();
Timeout(() => {
this.beforeUnload();
}, 0);
});
【问题讨论】:
-
很难说,因为答案不准确。如果您使用按钮,但它都是相同的处理程序方法,这无关紧要。快速测试和默认代码:
$location.path('/newValue').search({key: value});与按钮一起使用时效果很好。 -
您是否看到我的代码可能有什么问题或应该如何更改?我在控制台中添加了 window.location.href ,我看到在我的方法运行后添加了我的参数,但随后它正在执行一些标准的 angularjs 代码,并且在其中一个 return resolver(value);我看到它恢复了。
-
我会在一秒钟内尝试使用超时。在看到您的答案之前,我对 $scope.$apply() 有了一个想法,但是关于摘要的错误已经在进行中。
-
我想我已经尝试了一切,但我无法让它工作:(我最后一次尝试是 Timeout(() => { this.scope.$apply(()=> { this .beforeUnload(); }); }, 2000); }
标签: javascript angularjs