angularjs路由匹配$ window.location

时间:2017-07-23 10:48:05

标签: javascript angularjs

我想使用angularjs $window重新加载具有不同html页面的页面,文档说:

  

页面重新加载导航   $ location服务允许您仅更改URL;它不允许您重新加载页面。当您需要更改URL并重新加载页面或导航到其他页面时,请使用较低级别的API,$ window.location.href。

所以我将loaction设置到页面$window.location.href = '/transaction';

config块上的匹配路径:

app.config(function($routeProvider) {
    $routeProvider
    .when('/transaction', {
        templateUrl : 'JavaScript/directives/modelHTML/Transaction.html',
        controller : 'endProcessModelController'
    });
});

但是,在Transaction.html页面的instrad中,我使用路由404: SRVE0190E: File not found: /transaction获得了错误mydomain.com/UI/transaction

BTW - templateUrl url在UImodel等其他地方工作正常,所以problam是我想的导航。

3 个答案:

答案 0 :(得分:1)

将位置设置为页面$window.location.href = '#/transaction';'#'表示起始页的位置,通常是index.html。所以链接将是index.html#/transaction。因为它是单页应用

我认为在你的配置中

'/UI/transaction'  instead of  `/transaction`

并在链接中执行$window.location.href = '#/UI/transaction'

答案 1 :(得分:0)

试试这个

$location.path($window.location.origin +'/transaction');

如果您觉得所有路线在原点之后都有额外的东西,您可以为此设置<base href="...">并告诉角度从哪里获取剩余的文本用于路线目的。

如果您使用your_origin/transaction重定向该页面,您的浏览器将向/transaction服务器发出请求,服务器将无法理解该服务器,404将会到来。但路由是客户端(浏览器)路由,所以如果你路由到路由/abc你的javascript代码正在解释它,并调用相应的操作,(可能是对html模板的服务器的不同调用或一些数据依赖,然后实例化控制器并附加到视图)。因此,应该加载您尝试路由您的JavaScript代码的那一刻。

要么使用路由到#之后的ui路由器,这允许浏览器在(#)的文本之后播放而不是重新加载。

或者,让你的服务器这样一种方式,如果一个未识别的请求到来你应该返回基(索引)页面,所以它将加载所有脚本,js将完成其余的工作。 (但显然你会丢失该状态下的所有现有数据)

答案 2 :(得分:0)

mydomain.com/UI/transaction地址是否正确(您使用html5模式)?

当您尝试直接输入mydomain.com/UI/transaction时会出现问题吗?

如果是这样,问题是服务器配置错误(例如.htaccess文件)。