Javascript AngularJS-在下拉列表中设置与另一个对象匹配的选定值

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的外观

$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;
}