สิ่งหนึ่งที่ควรทราบคือจำเป็นต้องใช้ ngModel เพื่อให้ ngOptions ทำงาน ... โปรดสังเกตสิ่งng-model="blah"ที่กำลังพูดว่า "set $ scope.blah เป็นค่าที่เลือก"
ลองสิ่งนี้:
<select ng-model="blah" ng-options="item.ID as item.Title for item in items"></select>
นี่คือเพิ่มเติมจากเอกสารของ AngularJS (ถ้าคุณยังไม่เห็น):
  สำหรับแหล่งข้อมูลอาเรย์:
  
  
  - ป้ายชื่อสำหรับค่าในอาร์เรย์
- เลือกเป็นป้ายกำกับสำหรับค่าในอาร์เรย์
- กลุ่มป้ายกำกับตามกลุ่มสำหรับค่าในอาร์เรย์ = เลือกเป็นกลุ่มป้ายกำกับตามกลุ่มสำหรับค่าในอาร์เรย์
สำหรับแหล่งข้อมูลวัตถุ:
  
  
  - ป้ายกำกับสำหรับ (คีย์ค่า) ในวัตถุ
- เลือกเป็นป้ายกำกับสำหรับ (คีย์ค่า) ในวัตถุ
- กลุ่มป้ายกำกับตามกลุ่มสำหรับ (คีย์ค่า) ในวัตถุ
- เลือกเป็นกลุ่มป้ายกำกับตามกลุ่มสำหรับ (คีย์ค่า) ในวัตถุ
สำหรับการชี้แจงบางอย่างเกี่ยวกับค่าแท็กตัวเลือกใน AngularJS:
เมื่อคุณใช้ng-options, ค่าของแท็กตัวเลือกที่เขียนออกมาโดย ng ตัวเลือกจะเป็นดัชนีของรายการอาร์เรย์แท็กตัวเลือกที่เกี่ยวข้องกับ นี่เป็นเพราะ AngularJS ช่วยให้คุณสามารถเลือกวัตถุทั้งหมดด้วยตัวควบคุมแบบเลือกไม่ใช่เฉพาะชนิดดั้งเดิม ตัวอย่างเช่น:
app.controller('MainCtrl', function($scope) {
   $scope.items = [
     { id: 1, name: 'foo' },
     { id: 2, name: 'bar' },
     { id: 3, name: 'blah' }
   ];
});
<div ng-controller="MainCtrl">
   <select ng-model="selectedItem" ng-options="item as item.name for item in items"></select>
   <pre>{{selectedItem | json}}</pre>
</div>
ด้านบนจะช่วยให้คุณสามารถเลือกวัตถุทั้งหมดเป็น$scope.selectedItemโดยตรงประเด็นคือด้วย AngularJS คุณไม่จำเป็นต้องกังวลเกี่ยวกับสิ่งที่อยู่ในแท็กตัวเลือกของคุณ ให้ AngularJS จัดการสิ่งนั้น คุณควรใส่ใจว่ามีอะไรในโมเดลของคุณในขอบเขตของคุณ
นี่คือพลั่วเกอร์ที่แสดงพฤติกรรมด้านบนและแสดง HTML ที่เขียนออกมา
การจัดการกับตัวเลือกเริ่มต้น:
มีบางสิ่งที่ฉันไม่ได้กล่าวถึงข้างต้นเกี่ยวกับตัวเลือกเริ่มต้น
การเลือกตัวเลือกแรกและลบตัวเลือกที่ว่างเปล่า:
คุณสามารถทำได้โดยการเพิ่มวิอย่างง่ายng-initที่กำหนดโมเดล (จากng-model) เป็นองค์ประกอบแรกในรายการที่คุณทำซ้ำng-options:
<select ng-init="foo = foo || items[0]" ng-model="foo" ng-options="item as item.name for item in items"></select>
หมายเหตุ: สิ่งนี้อาจจะบ้าไปหน่อยถ้าfooมีการเริ่มต้นอย่างถูกต้องกับบางสิ่งที่ "ผิดพลาด" ในกรณีนี้คุณจะต้องจัดการการเริ่มต้นfooในคอนโทรลเลอร์ของคุณส่วนใหญ่
การกำหนดตัวเลือกเริ่มต้นเอง:
มันแตกต่างกันเล็กน้อย สิ่งที่คุณต้องทำก็คือเพิ่มแท็กตัวเลือกเป็นรายการย่อยที่คุณเลือกพร้อมแอตทริบิวต์ค่าว่างจากนั้นปรับแต่งข้อความภายใน:
<select ng-model="foo" ng-options="item as item.name for item in items">
   <option value="">Nothing selected</option>
</select>
หมายเหตุ: ในกรณีนี้ตัวเลือก "ว่าง" จะยังคงอยู่แม้หลังจากที่คุณเลือกตัวเลือกอื่น นี่ไม่ใช่กรณีของพฤติกรรมเริ่มต้นของตัวเลือกภายใต้ AngularJS
ตัวเลือกเริ่มต้นที่กำหนดเองซึ่งซ่อนหลังจากทำการเลือก:
หากคุณต้องการให้ตัวเลือกเริ่มต้นที่กำหนดเองของคุณหายไปหลังจากเลือกค่าคุณสามารถเพิ่มแอตทริบิวต์ ng-hide ให้กับตัวเลือกเริ่มต้นของคุณ:
<select ng-model="foo" ng-options="item as item.name for item in items">
   <option value="" ng-if="foo">Select something to remove me.</option>
</select>