簡體   English   中英

輸入確切的URL以使用ui-router訪問特定的部分Angular

[英]Typing in exact URL to visit specific partial Angular using ui-router

對Angular來說很新,我相信我在這里遺漏了一些明顯的東西。 我正在使用ui-router。

我想提供一個指向我的客戶的鏈接,以便他們可以點擊URL鏈接並訪問具有相應部分的Web應用程序。 我也希望能夠傳遞參數。 這就是我接近這個問題的方式(有點像)。 這是我的主控制器:

var pNumber = $location.search().number;
    if (!(pNumber == null || pNumber == "")){
        $state.go('view-ticket');
    }

這是我的app.js:

  $stateProvider
    .state('home', {
      url: "/",
      templateUrl: 'partials/welcome-screen.html',
      controller: 'mainPageController'
    })
    .state('submit-ticket', {
      url: "/submit-ticket",
      templateUrl: 'partials/ticket-submit.html',
      controller: 'TicketSystemTestCtrl'      
    })
    .state('view-ticket', {
      url: "/view",
      templateUrl: "partials/ticket-central.html",
      controller: 'TicketCentralCtrl'
    })

邏輯是這樣的:如果URL包含一個param'number'注入ticket-central.html partial。

但是,當我在調試器中運行它時,似乎代碼的第一部分在加載welcome-screen.html partial之前已執行。 怎么解決這個?

編輯:我試圖在URL中鍵入: http:// localhost / techsupport / view ,我希望它將ticket-central.html partial加載到主視圖中。 但是,它不會起作用。

如果我理解正確你想要做的就是提供“深度鏈接”到“查看票證”狀態的可能性。

對於此搜索,params不是理想的解決方案,因為它們是可選的,只需使用路徑變量:

.state('view-ticket', {
  url: '/view/:ticketNumber,
  template: 'partials/ticket-central.html',
  controler: 'TicketCentralCtrl'
})

如果你真的不需要,也不要使用$ location服務,看看$ stateParams

這是一個帶有歡迎和票證狀態的小型plunkr在單獨的窗口中啟動預覽以查看URL如何更改 - 您還可以在每個頁面上刷新並且將加載正確的狀態

https://plnkr.co/edit/r3UcYbfwET0OVwkd77Rv

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM