2016-12-15 23 views
2

請參考下面AngularJS - 在下拉列表中選擇設定值,其中值與另一個對象相匹配

https://plnkr.co/edit/8xjmL9?p=preview

我plunkr這是我的$ 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)" 
    } 
] 

這是我的se LECT貌似這顯然是錯誤

<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

+0

你能告訴你的'NG-repeat'聲明? –

+0

我已經更新了整個表格的問題,所以你可以看到ng-repeat – aliaz

回答

3

我不認爲有必要使用ng-init定義一個新模型,而且使用方式也是錯誤的。您需要綁定您想要通過該字段更新的模型。在這種情況下,它是data陣列的projectedStart屬性。所以把它設置爲你的下拉模型。現在你需要設置ng-option這樣當選擇dateName時,projectedStart屬性應該作爲值。 以下代碼對你來說將是一個不錯的選擇。

<select class="form-control" 
         ng-model="d.projectedStart" 
         ng-options="dates.projectedStartDate as dates.dateName for dates in possibleDates"> 
        </select> 

我已經更新了plunker - https://plnkr.co/edit/Hd2UBec1ULK6XQ2H26hC?p=preview

+0

謝謝先生,你是一個天才。這正是我想要的。 – aliaz

0

我不認爲你需要把{{}}ng-init表達式內。 此外,你需要使用d而不是data,正如你所定義d in datang-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> 
+0

我試過了另一種方法,但它只有在我從