2017-02-17 60 views
0

以下代码有效。我的问题是这是否是正确的做法。使用AngularJS select元素将变量设置为对象而不是字符串

可变设备是对象的数组,并且当用户选择一个可变selDev获取设置为这些对象中的一个。如果我通过ng-model属性制作selDev模型,那么它会得到一个字符串,而不是原始模型。

<p> 
     <label>Device Id:</label> 
     <select ng-model="selDevIndex" 
      ng-change="selDev = devices[selDevIndex]"> 
      <option value="">(no device)</option> 
      <option ng-repeat="device in devices " 
        value="{{$index}}"> 
       {{device.id}}: {{device.type}} {{device.mfr}} 
       {{device.serial}} 
      </option> 
     </select> 
    </p> 

我觉得这有点笨拙,因为包含了$ index引用。如果设备是一个不是数组的对象,此技术也不起作用。有没有更好的办法?

回答

1

您可以使用ng-options

HTML:

<select ng-model="selectedModel" 
      ng-options="device as device.text for device in devices track by device.id"> 
    </select> 

控制器:

$scope.selectedModel; 
$scope.devices = [{ 
    id: 1, 
    text: "Device1" 
}, { 
    id: 2, 
    text: "Device2" 
}]; 

入住这jsFiddle
如果你有遍历一个n对象而不是数组,请检查此post

相关问题