2014-07-14 85 views
-1

我有以下控制器:角路線和參數不工作

app.controller('ObjectBoardCtrl', ['$scope' , '$rootScope' , '$routeParams' , 
    function($scope , $rootScope, $routeParams) { 
    $scope.selectedObjectId = $routeParams.id; 
}]); 

而且這條線路配置:

app.config(['$routeProvider', 
    function($routeProvider, $routeParams) { 
    $routeProvider.when('/object/:id', { 
     controller: 'ObjectBoardCtrl' 
     }); 
    }]); 

的$ routeParams對象爲null我做什麼都。我試圖用#/ object/4334訪問不同的頁面,並在我的頁面上有不同的ID鏈接,但它拒絕更新$ routeParams對象。 毫無疑問,ngRoute被注入並且控制檯上沒有錯誤。 我在這裏錯過了什麼? (我幾乎遵循我找到的每個教程)。

謝謝!

+0

你是否包含'ngRoute'作爲依賴? – lucuma

+0

@lucuma - 是的,否則我的應用程序甚至不工作 – Shai

回答

0

嘗試從你的配置功能刪除$routeParams,你不需要他們那邊。使用空的模板,讓你的路線是這樣的:

app.config(['$routeProvider', function($routeProvider) { $routeProvider.when('/object/:id', { controller: 'ObjectBoardCtrl', template: '' }); }]);

使用<div ng-view></div>在HTML文件作爲控制器的容器。

+0

這真的很接近!我可以看到範圍對象正在使用正確的id進行更新,但現在我的所有html都消失了: -/ – Shai

+0

好吧,現在您需要從'

'中取出任何與Angular相關的代碼,並將它放在路由中 - 模板:'代碼在這裏'或更好 - 在單獨的文件'objectBoard.tmpl.html'中,然後從你的路線鏈接到它 - >'template:'objectBoard.tmpl.html'。這樣,你的路由器負責分配一個控制器和一個模板到你的地址欄中的路徑,並將模板的內容發送到'ng-view'。 – codeepic

+0

好吧,我將其更改爲templateUrl並將我的html外部,它現在似乎工作,謝謝! – Shai

0

試試這個:

$scope.selectedObjectId = $route.current.params.id; 

注入$route代替

+0

它說params是未定義的。如果我設置selectedObjectId = $ route,然後單擊鏈接,則可以看到具有其值的$ route.current.params.id。 – Shai