Được cung cấp một phần tử HTML loại div
, làm thế nào để đặt giá trị của id
thuộc tính của nó , đó là nối của biến phạm vi và chuỗi?
Được cung cấp một phần tử HTML loại div
, làm thế nào để đặt giá trị của id
thuộc tính của nó , đó là nối của biến phạm vi và chuỗi?
Câu trả lời:
ngAttr
Chỉ thị hoàn toàn có thể giúp đỡ ở đây, như được giới thiệu trong tài liệu chính thức
https://docs.angularjs.org/guide/interpolation#-ngattr-for-binding-to-arbitrary-attribut
Chẳng hạn, để đặt id
giá trị thuộc tính của một div
phần tử, để nó chứa chỉ mục, một đoạn xem có thể chứa
<div ng-attr-id="{{ 'object-' + myScopeObject.index }}"></div>
mà sẽ được nội suy để
<div id="object-1"></div>
myScopeObject
là một thuộc tính của một scope
đối tượng được phơi bày bằng bộ điều khiển. Vui lòng xem thêm docs.angularjs.org/guide/controll . Điều đó có đủ rõ ràng cho bạn hay tôi sẽ giải thích thêm?
<div id="{{ 'object' + index }}">
và <div ng-attr-id="{{ 'object' + index }}">
? Các tài liệu dường như nói rằng việc chuẩn bị trước ng-attr-
là để giúp đỡ trong trường hợp phần tử là một cái gì đó không chuẩn, giống như không phải là a <div>
. Tôi đang đọc tài liệu phải không?
Điều này làm việc cho tôi khá tốt:
<div id="{{ 'object-' + $index }}"></div>
ng-attr-id
là lợi thế trong 0% các tình huống. Không có ví dụ có thể được cung cấp, bởi vì không có.
ng-attr-id
phương pháp là để đảm bảo rằng sự biểu hiện ng nguyên không bao giờ được kết xuất trong một thuộc tính HTML hợp lệ (ví dụ id
, label
, vv). Điều này là để ngăn chặn bất kỳ việc sử dụng xuôi dòng nào khi đọc ng 'rác' (ví dụ: trước khi kết xuất hoàn tất hoặc sau khi sự cố js)
Trong trường hợp bạn đến câu hỏi này nhưng liên quan đến phiên bản Angular mới hơn > = 2.0 .
<div [id]="element.id"></div>
Một cách thanh lịch hơn tôi tìm thấy để đạt được hành vi này chỉ đơn giản là:
<div id="{{ 'object-' + myScopeObject.index }}"></div>
Để thực hiện, tôi muốn mỗi phần tử đầu vào lặp lại cho mỗi phần tử có một id duy nhất để liên kết nhãn. Vì vậy, đối với một loạt các đối tượng có trong myScopeObjects, người ta có thể làm điều này:
<div ng-repeat="object in myScopeObject">
<input id="{{object.name + 'Checkbox'}}" type="checkbox">
<label for="{{object.name + 'Checkbox'}}">{{object.name}}</label>
</div>
Có thể tạo id duy nhất một cách nhanh chóng có thể khá hữu ích khi tự động thêm nội dung như thế này.
Chỉ <input id="field_name_{{$index}}" />
Nếu bạn sử dụng cú pháp này:
<div ng-attr-id="{{ 'object-' + myScopeObject.index }}"></div>
Angular sẽ kết xuất một cái gì đó như:
<div ng-id="object-1"></div>
Tuy nhiên cú pháp này:
<div id="{{ 'object-' + $index }}"></div>
sẽ tạo ra một cái gì đó như:
<div id="object-1"></div>
ng-attr-id
tạo ng-id
..? Sai rồi. Tôi tự hỏi ai ủng hộ điều này
myScopeObject
đến từ đâu? Tôi sẽ định nghĩa nó ở đâu?