2014-02-07 27 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> 

干杯

萨科

相关问题