我正在构建一个AngularJS应用程序(1.4),现在我正在使用一个下拉菜单来选择不同的页面。
问题是,当我在菜单中选择一个页面并转到该页面时,我希望在下拉菜单中自动选择该页面的名称,但这并没有发生。
代码如下:
<select ng-options="menu_voice.name for menu_voice in menu_voices track by menu_voice.url" ng-model='selectedOption' ng-change="changeLink()">
</select>
JS代码:
$scope.changeLink = function(){
$state.go($scope.selectedOption.url);
};
$scope.menu_voices = [
{
"url": 'account.company',
"name": 'Company'
},
{
"url": 'account.billing',
"name": 'Billing'
}
...
];
最后,由于我使用的是angular-ui-router,所有这些页面都是嵌套视图,所以在嵌套视图的每个控制器中,我都有下面这行代码:
$scope.selectedOption = $scope.menu_voices[x];
其中x是我想要选择的菜单语音的编号。
我可以更改页面,但每次在下拉菜单中选择的语音都是空白的。我遗漏了什么?
发布于 2016-11-03 00:19:29
我对我的原始答案做了一个小的修改,因为我不能使用angularjs v1.4使它与"track by“子句一起工作。
HTML: // url现在是选择选项的值,名称是标签
<select ng-options="menu_voice.url as menu_voice.name for menu_voice in menu_voices" ng-model="selectedOption">
控制器:
要预先选择该选项,您需要将url分配给"selectedOption“。
$scope.selectedOption = $scope.menu_voices[x].url;
现在,对于更改链接,您可以在此处执行以下两项操作之一
$scope.changeLink = function(){
$state.go($scope.selectedOption);
};
或
$scope.changeLink = function(url){
$state.go(url);
};
再加上这个:
<select ng-change="changeLink(selectedOption)" ...>
使用angularjs的here is a working example v1.4
Here is a reference link来回答一个类似的问题,这可能会帮助你理解这里发生的事情。
https://stackoverflow.com/questions/40384731
复制相似问题