angularjs - 如何使用 $scope 变量在 ng-options 中预先选择默认选项
问题描述
我有一个<select>
带有其他字段的表格,就像这样-
<form class="formCSS">
<div class="inputs">
<label class="labelTag">Name *:   </label>
<select class="inputTag" ng-model="selectedName"
ng-options="n.name for n in adminNames"></select>
</div>
</form>
adminChannels
是这个结构的对象数组{_id:"....", name:"..."}
当我“transitionTo”这个状态时,我传递了一个名称(也存在于 adminNames 中),如下所示 -
$state.go('schedule',{name:response.name});
$scope.name
我希望在加载此模板时预先选择所述名称(使用 访问)。
我试过这样的东西 -
ng-init = "selectedName=adminNames[adminNames.indexOf(name)]"
我确实得到了自动填充的下拉菜单,但没有选择默认值。
我浏览了有关选择默认选项的所有其他帖子,它们都没有提供有关使用 $scope 变量进行预选的信息。
如果我需要提供更多信息/代码,请告诉我。提前致谢!
解决方案
使用Array.find():
$scope.selectedName = $scope.adminNames.find( x => (x.name == $scope.name));
该find()
方法返回数组中满足提供的测试函数的第一个元素的值。
另一种方法是使用指令as
中的子句:ng-options
<select class="inputTag" ng-model="selectedName"
ng-options="n.name as n.name for n in adminNames">
</select>
演示
angular.module("app",[])
.controller("ctrl",function($scope) {
$scope.adminNames=[
{name: "fred"},
{name: "jane"},
{name: "sally"},
];
$scope.selectedName="jane";
$scope.find = function(name) {
return $scope.adminNames.find( x => (x.name == name));
};
});
<script src="//unpkg.com/angular/angular.js"></script>
<body ng-app="app" ng-controller="ctrl">
<select class="inputTag" ng-model="selectedName"
ng-options="n.name as n.name for n in adminNames">
</select>
<br>
object = {{find(selectedName)}}
</body>
有关详细信息,请参阅
推荐阅读
- flutter - 隐藏导航菜单项,除非自动用户
- flutter - Flutter:如何使 Widget 离开屏幕
- asp.net - 使用 react js 项目运行新的 asp.net 时出现构建错误
- javascript - 预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段授权
- mysql - 最小化服务器和 Web 应用程序之间的延迟
- javascript - 如何从反应组件中的js文件中获取变量?
- python - Flask项目部署在heroku上但应用程序错误
- python - 当我运行我的代码时,输出对齐不准确,
- javascript - 鼠标移动事件不同的坐标
- magento2 - 如何在magento2中添加带有搜索栏的类别