Javascript 按对象id预选值的角度调整选项
以下Javascript 按对象id预选值的角度调整选项,javascript,angularjs,ng-repeat,ng-options,Javascript,Angularjs,Ng Repeat,Ng Options,以下select俱乐部是否有一个预选俱乐部 <select ng-model="c.pilot.clubIdx" ng-options="club.idx as club.name for club in c.clubs track by club.idx"> c、 pilot.clubIdx=2 c、 clubs={{idx:1,名称:“club1”},{idx:2,名称:“club2”} 选择菜单应显示“club2” 由于球杆存储在数据库中,可以更改,因此我只想将其作为飞
select
俱乐部是否有一个预选俱乐部
<select ng-model="c.pilot.clubIdx" ng-options="club.idx as club.name for club in c.clubs track by club.idx">
c、 pilot.clubIdx=2
c、 clubs={{idx:1,名称:“club1”},{idx:2,名称:“club2”}
选择菜单应显示“club2”
由于球杆存储在数据库中,可以更改,因此我只想将其作为飞行员
上的参考
已解决:通过删除磁道解决问题。
<select ng-model="c.pilot.clubIdx" ng-options="club.idx as club.name for club in c.clubs track by club.idx" ng-selected="(club.idx == 2)?true:false">
添加这样选择的ng。应该预先选择它
添加这样选择的ng。应使用下划线/lodash在控制器中使用以下行预先选择它:
var club =_.where(c.clubs, {name:"club2"});
$scope.c.pilot.clubIdx = club.idx;
使用下划线/lodash在控制器中使用以下行:
var club =_.where(c.clubs, {name:"club2"});
$scope.c.pilot.clubIdx = club.idx;
在控制器中,将select的ng模型设置为要选择的选项的值。类似于:$scope.c.pilot.clubIdx=2
或$scope.c.pilot.clubIdx=$scope.c.clubs[1]。控制器中的idx
将select的ng模型设置为所选选项的值。类似于:$scope.c.pilot.clubIdx=2
或$scope.c.pilot.clubIdx=$scope.c.clubs[1]。idx
删除track by子句可以解决问题。我不完全明白为什么,但谁知道呢 删除track by子句可以解决此问题。我不完全明白为什么,但谁知道呢 这就是问题所在,c.pilot.clubIdx是allready值2,但它在视图中未被选中。@OlliiRenner您能用这个问题创建一个plunker吗?使用此方法设置select的值应该不会有任何问题,下面是一个示例:非常感谢。添加option.id的轨迹(在您的情况下)会重新创建问题。在我的例子中删除它-解决它:)我真的不明白为什么,但是angular docs说“在同一表达式中使用select as和track by时要小心。”@OlliiRenner啊,好的,我现在看到问题了。老实说,我不能说我完全理解,但出于某种原因,当您使用track by
表达式时,每个选项的值都等于整个选项对象,而不仅仅是id(在您的情况下,它是club in clubs
中的club
)。因此,要设置默认值,您需要设置c.pilot.clubIdx=c.clubs[1]
,而不仅仅是将其设置为id的值。这就是问题所在,c.pilot.clubIdx是allready值2,但它在视图中未被选中。@OlliiRenner您能创建一个有此问题的plunker吗?使用此方法设置select的值应该不会有任何问题,下面是一个示例:非常感谢。添加option.id的轨迹(在您的情况下)会重新创建问题。在我的例子中删除它-解决它:)我真的不明白为什么,但是angular docs说“在同一表达式中使用select as和track by时要小心。”@OlliiRenner啊,好的,我现在看到问题了。老实说,我不能说我完全理解,但出于某种原因,当您使用track by
表达式时,每个选项的值都等于整个选项对象,而不仅仅是id(在您的情况下,它是club in clubs
中的club
)。因此,要设置默认值,您需要设置c.pilot.clubIdx=c.clubs[1]
,而不仅仅是将其设置为id的值。我认为这只适用于在标记上添加选中的ng,而不是在标签上添加选中的ng