Accessing parameters in custom data

点点圈 提交于 2019-12-20 04:18:07

问题


I'm using custom data to add a human readable name to my states, like this:

.state('data', {
  parent: 'week',
  url: '/data',
  displayName: 'Data Overview',

I can then use it in the template like this:

<h1>Showing {{$state.current.displayName}}</h1>

Which is nice. But now I want to create a route with a parameter, and use that parameter in the displayName:

.state('upload', {
  parent: 'week',
  url: '/upload/:level',
  displayName: 'Data Upload for ' + level,
  ...

But I can't figure out the correct syntax to use access the value of level inside the displayName.


回答1:


The static data (suggested to be placed inside of data : {} - not to be directly on the root state settings) - are static data. So:

there is NO way how to set these data dynamically. E.g. based on the $stateParams. These settings are expected to be defined in the .config() phase, not evaluated in .run()(in compariosn with others like resolve, templateUrl...)

See the doc:

Attach Custom Data to State Objects

You can attach custom data to the state object (we recommend using a data property to avoid conflicts).

// Example shows an object-based state and a string-based state
var contacts = { 
    name: 'contacts',
    templateUrl: 'contacts.html',
    data: {
        customData1: 5,
        customData2: "blue"
    }  
}
$stateProvider
  .state(contacts)
  .state('contacts.list', {
    templateUrl: 'contacts.list.html',
    data: {
        customData1: 44,
        customData2: "red"
    } 
  })

With the above example states you could access the data like this:

function Ctrl($state){
    console.log($state.current.data.customData1) // outputs 5;
    console.log($state.current.data.customData2) // outputs "blue";
}


来源:https://stackoverflow.com/questions/33282078/accessing-parameters-in-custom-data

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!