我想使用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是我想的导航。
答案 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文件)。