AngularJS:ngRoute不工作

时间:2017-01-14 22:12:40

标签: angularjs ngroute

我想要让这个简单的路由工作,并且无法找出问题所在。

这是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' }) ,则会触发事件,但视图未加载。

有什么想法吗?

3 个答案:

答案 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>
相关问题