簡體   English   中英

如何在AngularJS UI-Router中定義查詢參數的默認值?

[英]How to define defaults for query params in AngularJS UI-Router?

我有一條路線:

.state('list', {
  url:'/list?query',
  templateUrl: '/views/list.html',
  controller: 'ListCtrl as vm'
})

有沒有辦法確保查詢的默認值?

我不想在控制器中執行此操作,因為我將同一控制器用於其他路由,並且如果query未定義,則該控制器具有某些行為。

我想要的是用於默認query特定路由。

在舊的角度路線中,我已經做了這種事情...

.when('/list', 
  templateUrl: '/views/list.html',
  controller: 'ListCtrl'
  controllerAs:true,
  redirectTo:function(routeParams, path, search) {
    if(!search.query) {
      return "list?query=defaultSearch";   
    }
  }
})

您可以在控制器加載之前使用onEnter方法執行邏輯。

從ui-router Wiki https://github.com/angular-ui/ui-router/wiki

$stateProvider.state("contacts", {
  template: '<h1>{{title}}</h1>',
  resolve: { title: 'My Contacts' },
  controller: function($scope, title){
    $scope.title = title;
  },
  onEnter: function($location){
    if($location){ ... do something ... }
  }
})

我們可以使用稱為params的設置。 有一個正在工作的矮人

.state('list', {
  url:'/list?query',
  templateUrl: 'views/list.html',
  controller: 'ListCtrl as vm',
  params: { query: 'DEFAULT VALUE' }, // here the default
})

這些鏈接將按預期工作

<a href="#/list?"> - with default 'query' value 
<a href="#/list?query=someParam">
<a ui-sref="list({query:'theParam'})">

這里檢查它的作用

詳細信息在這里討論:

Angular ui路由器在沒有URL的狀態之間傳遞數據

如果我說對了,那么如果用戶請求的狀態與定義的任何狀態都不匹配,則需要進入一種狀態。

如果這是必需的,則嘗試使用$ urlRouterProvider的“ otherwise”方法

喜歡,

$urlRouterProvider.otherwise("/default-state");

暫無
暫無

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

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