2013-02-21 69 views
3

我完全是AngularJS的新手。只想用$ routeProvider嘗試相對URL。

下面是這種情況:

我有一個 「編輯」 頁面時,ASP.NET MVC鏈接頁面將是:

http://localhost/Workflow/Edit 

所以ASP.NET MVC控制器是「WorkflowController 「並且動作是」編輯「。對於諧音我有控制的動作,每個返回的局部視圖這樣的:

public ActionResult WorkflowTransition() 
    { 
     return PartialView("WorkflowTransition"); 
    } 

    public ActionResult WorkflowTransitionApprovers() 
    { 
     return PartialView("WorkflowTransitionApprovers"); 
    } 

以下是AngularJS模塊配置 - 請注意:一個PartialView(如上所述)被稱爲每一條路線的(這可能是不正確的):

$routeProvider.when('Workflow/WorkflowTransition', { 
     templateUrl: '/Workflow/WorkflowTransition', 
     controller: 'transitionCtrl', 
    }); 
    $routeProvider.when('Workflow/WorkflowTransitionApprovers', { 
     templateUrl: '/Workflow/WorkflowTransitionApprovers', 
     controller: 'approversCtrl' 

    $routeProvider.otherwise({ 
     redirectTo: '/' 
    }); 

注:我有指定的以下任一:

$ locationProvider.html5Mode(假);

OR

$ locationProvider.html5Mode(假).hashPrefix( '!');

的HREF鏈接指定這樣的:

<a href="#/Workflow/WorkflowTransition">{{workflow.Identifier}}</a> 

這會產生這種形式的鏈接:

http://localhost/Workflow/Edit#/Workflow/WorkflowTransition 

這顯然是錯誤的(和點擊鏈接並不可能做任何事情因爲瀏覽器試圖導航到哈希),所以我嘗試了領先的'/',但也沒有運氣:

<a href="/#/Workflow/WorkflowTransition">{{workflow.Identifier}}</a> 

如果我直接導​​航部分,即http://localhost/Workflow/WorkflowTransition,瀏覽器按原樣呈現html(以及angularjs大括號{{}})。

我的問題是:AngularJS如何處理'#'或'#!'當涉及到確定相對URL?對於例如做這條路線(假設我收工/編輯部分從URL中的錨標記):

$routeProvider.when('Workflow/WorkflowTransition',匹配的網址:

http://localhost/Workflow/#WorkflowTransition

它是否從URL中刪除'#',然後根據$ routeProvider.when()中的URL模式進行檢查?

有人可以建議相關網址的正確路線嗎?

回答

3

從我的觀察,匹配路線時必須刪除散列。我有一個像

<a href="#Objects"> 

的鏈接導致URL

http://localhost:55033/#/Objects 

我的路由設定

$routeProvider.when("/Objects", { 
    templateUrl: "objects.html", 
    controller: ObjectCtrl 
}); 

這正常工作,在正確的部分拉動。請注意,在這種情況下,我不通過ASP.NET MVC控制器渲染partials。相反,我有objects.html躺在身邊作爲純html文件,我在href中使用哈希,所以ASP.NET MVC路由不踢。

+0

謝謝你。 – Faredoon 2013-05-21 00:07:21

1

Routeprovide應該像下面設置。

$routeProvider.when('/Workflow/WorkflowTransition', { 
    templateUrl: "WorkflowTransition.html", 
    controller: WorkflowTransitionCtrl 
}); 

和URL應該在下面的formmate中輸入。

http://localhost/#/Workflow/WorkflowTransition ?