2014-02-08 35 views
0

我不清楚爲什麼這不起作用。我的代碼的其餘部分 - 無法使用基於URL的路由工作正常,我測試了所有。然而,當我嘗試在我的url(base.url/route /:param)中包含一個URL參數時,我的routeProvider的'.otherwise'元素正在觸發,而不是在routeProvider中指定的適當的控制器。使用URL參數時不會觸發控制器

這裏的代碼的相關位:

module.config

app.config(function($routeProvider){ 
//http://docs.angularjs.org/tutorial/step_07 
$routeProvider 
    .when('/home', 
     { 
      templateUrl: 'app/partials/home.html', 
      controller: 'HomeController' 
     }) 
    .when('/implementation-reference/:ref-scope', 
     { 
      templateUrl: 'app/partials/topic_tpl.html', 
      controller: 'ImplReference' 
     }) 
    .when('/projects', 
     { 
      templateUrl: 'app/partials/project_list_tpl.html', 
      controller: 'Projects' 
     }) 
    .when ('/site-help', 
     { 
      templateUrl: 'app/partials/site-help.html' 
     }) 
    .otherwise(
     { 
     templateUrl: 'app/partials/404.html' 
     }) 
}); 

module.controller

app.controller('ImplReference', function($scope, $routeParams) { 
alert('hi');  
}); 

會/執行基準/不管我拿到404頁。

任何想法,爲什麼我沒有看到我在控制器的開始放置的警報,也沒有看到控制檯中的任何錯誤?

+0

我相信url應該是'#/ implementation-reference/whatever' – Chandermani

+0

getAllTooicPosts是哪裏? – Sprottenwels

+0

@Chandermani,爲什麼我需要添加散列?在瀏覽器中存在實際的URL,但是RouteProvider中的所有其他路由都可以在上面運行,它們不需要添加哈希。 – Max

回答

0

盡我所知,問題在於使用RouteProvider中定義的參數中的破折號。我本來有:

.when('/implementation-reference/:ref-scope', 
    { 
     templateUrl: 'app/partials/topic_tpl.html', 
     controller: 'ImplReference' 
    }) 

當我把它改成這樣:

.when('/implementation-reference/:ref', 
    { 
     templateUrl: 'app/partials/topic_tpl.html', 
     controller: 'ImplReference' 
    }) 

,突然一切工作正常。

在向我顯示$路由信息的'否則'中添加控制器後,我注意到了這一點。在鑽過它之後,我看到在具有參數的預定義路線上的正則表達式僅在短劃線之前的部分上工作。

我已經迷惑了幾個小時,無法想象這是如何不記錄更清楚的地方。也許這是一些新手的錯誤(我是新手)。

0

抱歉無法評論... 什麼是formsImplReference?

app.controller('ImplReference', ['$scope', '$routeParams', 
    function ($scope, $routeParams) { 
    alert('hi'); 
    }]); 
+0

它的一個工廠,返回一個API調用的結果。 – Max

相關問題