我想要让这个简单的路由工作,并且无法找出问题所在。
这是HTML:
Rails.application.config.ssl_options = { hsts: { subdomains: true } }

这是路由:
<html lang="en" ng-app="app">
.
.
.
<a href="#voip">
<div class="col-lg-3 service">
<img src="assets/img/voip.svg"/>
<h4 ng-bind-html="content.home.voip_header"></h4>
<p ng-bind-html="content.home.voip_txt"></p>
</div>
</a>
<section id="view">
<div ng-view></div>
</section>
如果我指定&#39;则加载模板。否则&#39;如下。我想也许我在我的href属性中使用了错误的语法,但我到处看,看起来应该是这样。
var app = angular.module('app',[
'ngRoute',
'ngSanitize'
]);
app.config(['$routeProvider',function($routeProvider){
$routeProvider
.when('/voip',{
templateUrl:'assets/templates/voip.html'
});
}]);
另一件事是,如果我听 .otherwise({
redirectTo:'/voip'
})
,则会触发事件,但视图未加载。
有什么想法吗?
答案 0 :(得分:18)
这是正确的,因为您正在使用角度1.6并且更改了默认的哈希前缀:
由于aa077e8,用于$ location hash-bang的默认哈希前缀 网址已从空字符串('')更改为bang('!')。如果你的 应用程序不使用HTML5模式或正在浏览器上运行 不支持HTML5模式,并且您尚未指定自己的模式 hash-prefix然后客户端URL现在包含一个!字首。对于 例如,URL将成为mydomain.com/#/a/b/c而不是 mydomain.com /#!/ A / B / C
如果你真的想要没有hash-prefix,那么你可以恢复 通过向您的应用程序添加配置块来执行以前的行为:
appModule.config(['$ locationProvider',function($ locationProvider){
$ locationProvider.hashPrefix( ''); }]); Source
所以你有一些选择:
<强> 1。设置HTML5mode为真
$locationProvider.html5Mode(true);
并在html set base in html header:
<base href="/">
最后将<a ng-href="#voip">
更改为
<a ng-href="voip">
<强> 2。使用1.6方式
更改
<a ng-href="#voip">
到
<a ng-href="#!voip">
第3。从1.5 - 手动设置哈希前缀
返回旧行为app.config(['$locationProvider', function($locationProvider) {
$locationProvider.hashPrefix('');
}]);
答案 1 :(得分:2)
尝试在html5 + ajs 1.6中使用感叹号。
例如代替href =&#34; #home&#34; .....写href =&#34;#!home&#34;。 经过4个小时的头部划伤,它对我有用。
答案 2 :(得分:0)
5,我弄清楚了为什么它不能更早地工作
我错过了在index.html中添加以下内容
<div ng-view></div>