2015-01-27 116 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