Xem ngOptions
ngOptions (tùy chọn) - { comprehension_expression=
} - theo một trong các hình thức sau:
Đối với nguồn dữ liệu mảng :
label for value in array
select as label for value in array
label group by group for value in array
select as label group by group for value in array track by trackexpr
Đối với nguồn dữ liệu đối tượng:
label for (key , value) in object
select as label for (key , value) in object
label group by group for (key, value) in object
select as label group by group for (key, value) in object
Trong trường hợp của bạn, nó nên được
array = [{ "value": 1, "text": "1st" }, { "value": 2, "text": "2nd" }];
<select ng-options="obj.value as obj.text for obj in array"></select>
Cập nhật
Với các bản cập nhật trên AngularJS, giờ đây có thể đặt giá trị thực cho value
thuộc tính của select
phần tử có track by
biểu thức.
<select ng-options="obj.text for obj in array track by obj.value">
</select>
Làm thế nào để nhớ những thứ xấu xí này
Đối với tất cả những người đang gặp khó khăn để nhớ mẫu cú pháp này: Tôi đồng ý đây không phải là cú pháp dễ nhất hoặc đẹp nhất. Cú pháp này là một phiên bản mở rộng của việc hiểu danh sách của Python và biết rằng điều đó giúp tôi nhớ cú pháp rất dễ dàng. Nó giống như thế này:
Mã Python:
my_list = [x**2 for x in [1, 2, 3, 4, 5]]
> [1, 4, 9, 16, 25]
# Let people to be a list of person instances
my_list2 = [person.name for person in people]
> my_list2 = ['Alice', 'Bob']
Đây thực sự là cú pháp giống như cú pháp đầu tiên được liệt kê ở trên. Tuy nhiên, trong <select>
chúng ta thường cần phân biệt giữa giá trị thực trong mã và văn bản được hiển thị (nhãn) trong một <select>
phần tử.
Giống như, chúng tôi cần person.id
trong mã, nhưng chúng tôi không muốn hiển thị id
cho người dùng; chúng tôi muốn thể hiện tên của nó Tương tự như vậy, chúng tôi không quan tâm đến person.name
mã. Có as
từ khóa để nhãn công cụ. Vì vậy, nó trở thành như thế này:
person.id as person.name for person in people
Hoặc, thay vì person.id
chúng ta có thể cần person
cá thể / tham chiếu chính nó. Xem bên dưới:
person as person.name for person in people
Đối với các đối tượng JavaScript, phương thức tương tự cũng được áp dụng. Chỉ cần nhớ rằng các mục trong đối tượng được giải mã với (key, value)
các cặp.