2013-11-24 58 views
3

可以使用when()而不映射到任何控制器或模板?當(()沒有映射到控制器或模板時的角路由

這是我已經配置了我的路線:

app.config(function($routeProvider, $locationProvider) { 
    $locationProvider.html5Mode(true); 
    $routeProvider 
    .when('/presentations/:id', {}); 
}); 

我需要在我的控制器使用routeParams:

app.controller('PresentationController', function($scope, $routeParams) { 
    console.log($routeParams); 
}); 

這是行不通的。我不需要ngView,但我需要時添加它。我的控制器已經加載了ng-controller指令。

回答

3

人們必須不斷地看$routeParams.id在這種情況下的變化:http://plnkr.co/edit/x2cPxVWPqVePDule1aOk?p=preview

$scope.$watch(function() { return $routeParams.id; }, function (newVal) { 
    if (typeof newVal === 'undefined') return; 
    $scope.id = newVal; 
}) 

另外,具有在模板的ng-view是必要的。

+0

非常感謝:)。用那$手錶我可以跟蹤網址的變化,完美的作品。但我還有一個問題,第一次加載頁面時,當我的控制器被加載時,$ routeParams是未定義的,我可以在html中引用它,它可以工作,但不在控制器中。再次感謝你的幫助。 –

+0

@PedroGarcía你爲什麼需要參考它?你能否在我的演示中創建一個不起作用的更新示例? –

+0

我找不到如何更改plunker中的默認網址。不過,我在js文件中添加了一些註釋,說明問題出在哪裏。 http://plnkr.co/edit/raDtomFubQ56w6oiBvZT?p=preview –