2015-01-27 162 views
2

我正在使用HTML選擇以下數據和範圍代碼(下面)。我無法從範圍數據中獲取選擇列表中的初始值。有人能指出我搞砸了什麼嗎?AngularJS選擇初始值不選擇

$scope.hourOptions = [ 
      { value:'0', key: '12AM'}, 
      { value:'3600', key: '1AM'}, 
      { value:'7200', key: '2AM'}, 
      { value:'10800', key: '3AM'}, 
      { value:'14400', key: '4AM'}, 
      { value:'18000', key: '5AM'}, 
      { value:'21600', key: '6AM'}, 
      { value:'25200', key: '7AM'}, 
      { value:'28800', key: '8AM'}, 
      { value:'32400', key: '9AM'}, 
      { value:'36000', key: '10AM'}, 
      { value:'39600', key: '11AM'}, 
      { value:'43200', key: '12AM'}, 
      { value:'46800', key: '1PM'}, 
      { value:'50400', key: '2PM'}, 
      { value:'54000', key: '3PM'}, 
      { value:'57600', key: '4PM'}, 
      { value:'61200', key: '5PM'}, 
      { value:'64800', key: '6PM'}, 
      { value:'68400', key: '7PM'}, 
      { value:'72000', key: '8PM'}, 
      { value:'75600', key: '9PM'}, 
      { value:'79200', key: '10PM'}, 
      { value:'82800', key: '11PM'} 
     ]; 

這裏的景色

<select id="timeOfDay" class="form-control" 
     data-ng-options="option.value as option.key for option in hourOptions" 
     data-ng-model="topic.timeOfDay" 
     required 
     ></select> 

的$ scope.topic值設置爲72000這樣:

$scope.topic.timeOfDay = 72000; 

我試圖在數據 - 這改變爲一個字符串ng-init無濟於事。無論我做什麼,我都無法獲得初始值以在選擇列表中選擇自己。有任何想法嗎?

回答

5

由於option.value是數值的字符串表示形式,所以您還必須提供ng-model值作爲字符串。而在控制器而不是使用ng-init初始化初始化(雖然它不會引起問題,但只是它使用初始化這樣是不是一個好的模式)

嘗試:

$scope.timeOfDay = '72000'; 

和可能你打算設置ng-model爲data-ng-model="timeOfDay"或者反之亦然。

Plnkr

+0

這是問題。出於某種原因,ng-init沒有做任何事情(儘管我認爲它會)。把它設置成控制器中的一個字符串就可以了。我更新了我的代碼示例以確保正確(在範圍設置中有錯字)。謝謝! – 2015-01-27 02:38:35

+0

@DonnFelker不客氣。不會監視ng-init表達式,並且在ng-init中不使用'$ scope' explicity,其範圍在此處是隱含的。但是,正如官方文檔所說,在ng-init中初始化並不是一件好事。 – PSL 2015-01-27 02:40:43

+0

偉大的音符。再次感謝你! – 2015-01-27 02:46:14