2014-02-07 57 views
1

設置AngularJS - 更新控制器上的路由更改

app.controller('headerController', ['$scope', '$routeParams', function($scope, $routeParams) { 
    $scope.data = $routeParams; 
}]); 

app.config(['$routeProvider', 
    function ($routeProvider) { 
     $routeProvider. 
      when('/:url', { 
       template: '<h2>Hello World</h2>' 
      }) 
}]); 

佈局

<body> 
    <div ng-controller="headerController"> 
     Current Url:{{data.url}} 
    </div> 

    <div ng-view></div> 

    <ul> 
     <li> 
      <a href="#/pageA">Page A</a> 
     </li> 
     <li> 
     <a href="#/pageB>Page B</a> 
    </li> 
</body> 

問題

我想報頭部分不斷與當前的URL每次更新路線改變。當我第一次加載我的應用程序時,這起作用。但是,如果我更改路由,控制器不會更新到新的url。

我的問題不是關於解決這個確切的問題,因爲我知道還有其他的方法來做到這一點,而是使用這種設置解決它。換句話說,我需要知道如何使用當前路線在視圖之外提供控制器,並且每次更改路線時都要更新控制器。

回答

0

您應該嘗試使$ scope.data具有重新評估的功能。

否則,我建議你聽onRouteChangeSuccess觀看URL更改。

0

我試過了你的代碼,並稍加修改,如下所示,它完全用firefox在我身邊工作。 URL正確更新到頁面A或頁面B上更改

我也可能沒有理解這個問題?

var app=angular.module('app',['ngRoute']); 

app.controller('headerController', ['$scope', '$routeParams', function($scope, $routeParams) { 
    $scope.data = $routeParams; 
}]); 

app.config(['$routeProvider', 
    function ($routeProvider) { 
     $routeProvider. 
     when('/:url', { 
      template: '<h2>Hello World</h2>' 
     }) 
}]); 



<html ng-app="app"> 
<head> 
    <script src="angular.min.js"></script> 
    <script src="angular-route.js"></script> 
    <script src="controller.js"></script> 
</head> 
<body> 
    <div ng-controller="headerController"> 
     Current Url:{{data.url}} 
    </div> 

    <div ng-view></div> 

    <ul> 
     <li> 
      <a href="#/pageA">Page A</a> 
     </li> 
     <li> 
      <a href="#/pageB">Page B</a> 
     </li> 
</body> 

乾杯

薩科

相關問題