AngularJS ui router passing data between states without URL

前端 未结 2 617
死守一世寂寞
死守一世寂寞 2020-11-22 12:05

I am facing this problem of passing data between two states without exposing the data in the url, it\'s like user cannot really directly land on this state.

For exam

2条回答
  •  隐瞒了意图╮
    2020-11-22 12:46

    We can use params, new feature of the UI-Router:

    API Reference / ui.router.state / $stateProvider

    params A map which optionally configures parameters declared in the url, or defines additional non-url parameters. For each parameter being configured, add a configuration object keyed to the name of the parameter.

    See the part: "...or defines additional non-url parameters..."

    So the state def would be:

    $stateProvider
      .state('home', {
        url: "/home",
        templateUrl: 'tpl.html',
        params: { hiddenOne: null, }
      })
    

    Few examples form the doc mentioned above:

    // define a parameter's default value
    params: {
      param1: { value: "defaultValue" }
    }
    // shorthand default values
    params: {
      param1: "defaultValue",
      param2: "param2Default"
    }
    
    // param will be array []
    params: {
      param1: { array: true }
    }
    
    // handling the default value in url:
    params: {
      param1: {
        value: "defaultId",
        squash: true
    } }
    // squash "defaultValue" to "~"
    params: {
      param1: {
        value: "defaultValue",
        squash: "~"
      } }
    

    EXTEND - working example: http://plnkr.co/edit/inFhDmP42AQyeUBmyIVl?p=info

    Here is an example of a state definition:

     $stateProvider
      .state('home', {
          url: "/home",
          params : { veryLongParamHome: null, },
          ...
      })
      .state('parent', {
          url: "/parent",
          params : { veryLongParamParent: null, },
          ...
      })
      .state('parent.child', { 
          url: "/child",
          params : { veryLongParamChild: null, },
          ...
      })
    

    This could be a call using ui-sref:

    home
    
    parent
    
    parent.child
    

    Check the example here

提交回复
热议问题