2017-02-19 8 views
-1

Представьте меня есть государственное определение, как это:Могу ли я установить атрибут данных состояния ui-router динамически?

$stateProvider.state("main", { 
    url: "main/:param/list", 
    controller: "MainController", 
    data: function($stateParams) { 
     if($stateParams.param === "A") { 
     return 'param1'; 
     } else if($stateParams.param === "B") { 
     return 'param2'; 
     } 
    } 
} 

Могу ли я набор атрибутов данных, как это? Есть ли способ достичь желаемого поведения?

+0

вы думаете это правильный вопрос? где вы определили ** param1, param2 **? – Aravind

+0

Прошу прощения, я знаю, что вы имеете в виду, я отредактирую вопрос – Rachmaninoff

+0

, почему проголосовать ?? он дублируется? плохо сказано? почему вы не комментируете ниже, чтобы помочь улучшить его? – Rachmaninoff

ответ

1

Объект данных - это хранилище для любых данных, которые вы хотите добавить в службу $ state, что означает, что вы можете сохранить функцию внутри него, но вы не будете выполнены, что я не предполагаю, что вы пытаетесь достичь, вы можете узнать о добавлении пользовательских данных в $ состоянии here , так, чтобы сделать логику вы хотите сделать, вы должны использовать контроллер а не $ государственной службы, а именно:

$stateProvider.state("main", { 
url: "main/:param/list", 
controller: "MainController"/*, 
//only if you want to "store" your data on the $state, u can use it like this 
data: { 
    myCustomParam: 'my Awesome Value' 
}*/ 
})//..all your other states 

//now you pass the parameter in the url like This 
//http://xxxxxxx/main/myparamvalue/list 
//and in the controller 
app.controller('MainController',function($state, $stateParams){ 
    //Here you do your Logic 
    if($stateParams.param === "myparamvalue") { 
    console.log('param1');//it should go here 
    } else if($stateParams.param === "anythingelse") { 
    console.log('param2'); 
    } 
    /*if you have any values to get from the state data as previously mentioned you can get it like this*/ 
    console.log($state.current.data.myCustomParam);//output: my Awesome Value 

}); 
Смежные вопросы