在同一页面中加载不同html页面的内容

时间:2017-09-28 17:08:57

标签: javascript html angularjs

当用户选择链接时,我想根据用户选择在同一页面内加载其他html的内容。  提供的链接位于控制器(myController)内。如何加载基于的red.html和green.html  用户选择。如果链接不在ng-controller中,则以下js代码可用。

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular-route.js"></script>

<body ng-app="myApp">

<div ng-controller="myController">
<a href="#!red">Red</a>
<a href="#!green">Green</a>
<div ng-view></div>
</div>
<script>
var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider) {
    $routeProvider
    .when("/", {
        templateUrl : "main.htm"
    })
    .when("/red", {
        templateUrl : "red.html"
    })
    .when("/green", {
        templateUrl : "green.html"
    })
    .when("/blue", {
        templateUrl : "blue.html"
    });
});
</script>

</body>
</html>

PS:我希望链接位于ng-controller="myController"内,并根据用户选择我想在同一页面中加载html页面。 如果我从div中删除ng-controller,它正在加载内容,但我希望链接位于控制器内部,如上面的代码所示。

1 个答案:

答案 0 :(得分:0)

问题是你没有实现你的控制器如下。

//DEFINE THE CONTROLLER
////////////////////////////////
app.controller("myController", function(){

});

请看以下示例,它的工作正常。 我还将templateUrl修改为template仅用于演示目的。

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular-route.js"></script>

<body ng-app="myApp">

  <div ng-controller="myController">
    <a href="#!red">Red</a>
    <a href="#!green">Green</a>
    <div ng-view></div>
  </div>
  <script>
    var app = angular.module("myApp", ["ngRoute"]);

    //DEFINE THE CONTROLLER
    ////////////////////////////////
    app.controller("myController", function() {

    });

    app.config(function($routeProvider) {
      $routeProvider
        .when("/", {
          template: "<h1>Home</h1>"
        })
        .when("/red", {
          template: "<h1>Red</h1>"
        })
        .when("/green", {
          template: "<h1>Green</h1>"
        })
        .when("/blue", {
          template: "<h1>Blue</h1>"
        });
    });
  </script>

</body>

</html>