从函数内部更改ngview

时间:2017-09-24 22:25:11

标签: javascript html angularjs controller angular-ui-router

我正在使用模板来构建我的应用。基本上有一个主页面,然后我使用ng-view加载其他页面。 index.html中的href链接正常工作。但我也希望能够在js函数中更改ng-view。这是怎么做到的?

我尝试使用$location.path转到红页,但除了打印到控制台外似乎没有任何事情发生。在此之前,我尝试使用$window.location.href(),它确实转到了页面,但删除了index.html容器,打破了应用。

修改 正如Siddhesh的回答评论所指出的,如果不与$locationProvider.html5Mode(true);一起使用,它就有效。但我想保持干净的网址。所以,如果可能的话,我正在寻找一种方法来保留它。

的index.html

<head>
<base href="/testing/onetest/">
<script>
 app.controller('masterController',function($location){
     setTimeout(change, 3000);
         function change() {
            console.log("changing in 3 seconds");
            $location.path('/red');
          }
 });
</script>
</head>

<body ng-app="app" ng-controller="masterController">

<a href="/testing/onetest/">Main</a>
<a href="red">Red</a>
<a href="green">Green</a><br>


<div ng-view></div>

</body>

app.js

var app = angular.module("app", ["ngRoute"]);
app.config(function($routeProvider,$locationProvider) {
    $routeProvider
    .when("/", {
        templateUrl : "home.html",
         controller  : 'mainController'
    })
    .when("/red", {
        templateUrl : "red.html"
    })
    .when("/green", {
        templateUrl : "green.html"
    });

    $locationProvider.html5Mode(true);
});

1 个答案:

答案 0 :(得分:2)

对于角度js版本小于1.6

$window.location.href= '#red';

对于角度js版本1.6或更高

$window.location.href= '#!red';

试试这个,看它是否有效。这可能有助于您从功能更改ng-view。它对我有用。