Javascript AngularJS-在下拉列表中设置与另一个对象匹配的选定值
请看下面我的照片 这是我的$scope.data的外观Javascript AngularJS-在下拉列表中设置与另一个对象匹配的选定值,javascript,angularjs,Javascript,Angularjs,请看下面我的照片 这是我的$scope.data的外观 $scope.data = [ { "projectedStart":"2016-12-14T00:00:00" }, { "projectedStart":"2017-01-04T00:00:00" }, { "projectedStart":"2017-01-11T00:00:00" } ]; 这就是我的s
$scope.data = [
{
"projectedStart":"2016-12-14T00:00:00"
},
{
"projectedStart":"2017-01-04T00:00:00"
},
{
"projectedStart":"2017-01-11T00:00:00"
}
];
这就是我的scope.possibleDates的样子
$scope.possibleDates = [
{
"projectedStartDate":"2016-12-07T00:00:00",
"dateName":"December - Week 1"
},
{
"projectedStartDate":"2016-12-14T00:00:00",
"dateName":"December - Week 2"
},
{
"projectedStartDate":"2016-12-21T00:00:00",
"dateName":"December - Week 3"
},
{
"projectedStartDate":"2016-12-28T00:00:00",
"dateName":"December - Week 4"
},
{
"projectedStartDate":"2017-01-04T00:00:00",
"dateName":"January - Week 1 (20/10)"
},
{
"projectedStartDate":"2017-01-11T00:00:00",
"dateName":"January - Week 2 (20/10)"
}
]
这就是我的选择,这显然是错误的
<table class="table table-bordered table-hover">
<thead>
<tr>
<th >Projected Date</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="d in data">
<td>
<select class="form-control"
ng-model="selectedValue"
ng-init="selectedValue = {{data.projectedStart == dates.projectedStartDate}}"
ng-options="dates.dateName for dates in possibleDates">
</select>
</td>
</tr>
</tbody>
</table>
预计日期
我试图显示一个包含所有$scope.possibleDates的dateName属性的下拉列表,这很好,但我希望选择与$scope.Data中的“projectedStart”匹配的值。我认为您不需要将
{}
放入ng init
表达式中。
此外,您需要使用d
而不是data
,正如您在ng repeat
语句中定义的那样
试试这个:
ng-init = "selectedValue = (d.projectedStart == dates.projectedStartDate)"
我想这对你有用
备选方案:
您可以尝试使用此语句代替select语句
<select class="form-control" ng-model="selectedValue">
<option ng-repeat="dates in possibleDates" ng-selected = "d.projectedStart == dates.projectedStartDate">dates.dateName</option>
</select>
dates.dateName
只需将代码更改为:
<select class="form-control"
ng-model="selectedValue">
<option ng-repeat="dates in possibleDates" selected="{{d.projectedStart == dates.projectedStartDate}}">{{dates.dateName}}</option>
</select>
{{dates.dateName}
在nginit
中不需要{{}
,因为它是由Angular本身计算的
此外,对于要选择的项目,您需要将值设置为其中一个日期,您的评估将
selectedValue
设置为true
或false
我认为没有必要使用ng init定义一个新模型,而且使用方法也是错误的。您需要通过字段绑定要更新的模型。在这种情况下,它是data
数组的projectedStart
属性。因此,将其设置为下拉模型。现在您需要设置ng选项
,以便在选择dateName
时,projectedStart
属性应作为值。
下面的代码将是一个很好的选择
<select class="form-control"
ng-model="d.projectedStart"
ng-options="dates.projectedStartDate as dates.dateName for dates in possibleDates">
</select>
我已经更新了plunker-
选择代理
{{aList.FIRST{u NAME}{{aList.LAST{u NAME}}
这是我写的html代码(上面是html)
for(变量i=0;i<$scope.datalist.length;i++){
$scope.selectedAgent[i]=$scope.datalist[i]。集合\u代理\u ID;
}
这是我的控制器代码这对我来说很好你能展示你的
ng repeat
语句吗?我已经用整个表格更新了问题,这样你就可以看到ng repeat了。我已经尝试了替代方法,但只有当我从列表中删除ng模型时,它才起作用。我希望保留ng模型,因为我也希望使用ng更改。除非当这里的值发生变化时,有另一种方法触发函数调用。并且第一种方法不起作用??这种方法不太可能奏效,但只要把它清除掉就行了。谢谢你,先生,你是个天才。这正是我想要的。
<select class="form-control agentValue" style="padding: unset;" ng-model="selectedAgent[$index]" ng-change="setAgentID($index)">
<option value="">Select Agent</option>
<option ng-repeat="aList in agentlist" value="{{aList.LOGIN_ID}}">{{aList.FIRST_NAME}} {{aList.LAST_NAME}}</option>
</select>
for(var i= 0; i< $scope.datalist.length; i++){
$scope.selectedAgent[i] = $scope.datalist[i].COLLECTION_AGENT_ID;
}