访问自定义数据中的参数

时间:2015-10-22 13:22:04

标签: angularjs angular-ui-router

我正在使用自定义数据为我的州添加一个人类可读的名称,如下所示:

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

然后我可以在模板中使用它:

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

哪个好。但是现在我想创建一个带参数的路由,并在displayName中使用该参数:

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

但是我无法弄清楚使用leveldisplayName的值来访问template<typename T> T test(string type) { int integer = 42; float floateger = 42.42; if (type == "int") return integer; if (type == "float") return floateger; } int main() { int integer = test("int"); cout << "INTEGER: " << integer << endl; } 的正确语法。

1 个答案:

答案 0 :(得分:1)

static数据(建议放在data : {}内 - 不要直接在根状态设置中 - 静态数据。所以:

  

如何动态设置这些数据有 NO 方式。例如。基于$stateParams。这些设置预计将在.config()阶段定义,而不是在.run() 中进行评估(在与其他人的比较中,例如resolve,templateUrl ...)

参见文档:

Attach Custom Data to State Objects

  

您可以将自定义数据附加到状态对象 (我们建议您使用   数据属性,以避免冲突)。

// 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"
    } 
  })
     

通过上面的示例说明您可以访问如下数据:

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