ให้องค์ประกอบ HTML ประเภทdiv
วิธีการตั้งค่าของid
คุณลักษณะซึ่งเป็นการเชื่อมต่อของตัวแปรขอบเขตและสตริง?
ให้องค์ประกอบ HTML ประเภทdiv
วิธีการตั้งค่าของid
คุณลักษณะซึ่งเป็นการเชื่อมต่อของตัวแปรขอบเขตและสตริง?
คำตอบ:
ngAttr
คำสั่งทั้งหมดสามารถช่วยได้ที่นี่ตามที่แนะนำในเอกสารอย่างเป็นทางการ
https://docs.angularjs.org/guide/interpolation#-ngattr-for-binding-to-arbitrary-attributes
ตัวอย่างเช่นในการตั้งค่าid
คุณลักษณะของdiv
องค์ประกอบเพื่อให้มีดัชนีชิ้นส่วนมุมมองอาจมี
<div ng-attr-id="{{ 'object-' + myScopeObject.index }}"></div>
ซึ่งจะได้รับการแก้ไขเพื่อ
<div id="object-1"></div>
myScopeObject
เป็นคุณสมบัติของscope
วัตถุที่เปิดเผยโดยใช้ตัวควบคุม กรุณาเห็นdocs.angularjs.org/guide/controller ชัดเจนพอสำหรับคุณหรือฉันจะอธิบายเพิ่มเติมหรือไม่
<div id="{{ 'object' + index }}">
และ<div ng-attr-id="{{ 'object' + index }}">
? เอกสารดูเหมือนจะพูด prepending คือการช่วยให้ออกสำหรับกรณีที่มีองค์ประกอบเป็นสิ่งที่ไม่ได้มาตรฐานเช่นไม่ได้เป็นng-attr-
<div>
ฉันอ่านเอกสารใช่มั้ย
สิ่งนี้ทำงานได้ดีสำหรับฉัน:
<div id="{{ 'object-' + $index }}"></div>
ng-attr-id
มีประโยชน์ในสถานการณ์ 0% ไม่สามารถให้ตัวอย่างได้เนื่องจากไม่มี
ng-attr-id
วิธีการเพื่อให้แน่ใจว่าการแสดงออกงะดิบจะไม่แสดงผลในแอตทริบิวต์ที่ถูกต้อง HTML (เช่นid
, label
ฯลฯ ) นี้คือการหยุดการใช้งานใด ๆ ปลายน้ำอ่าน ng 'ขยะ' (เช่นก่อนที่จะทำให้เสร็จสมบูรณ์แล้วหรือหลังจากที่ผิดพลาด js)
ในกรณีที่คุณมาถึงคำถามนี้ แต่ที่เกี่ยวข้องกับการใหม่รุ่นเชิงมุม> = 2.0
<div [id]="element.id"></div>
วิธีที่สวยงามกว่าที่ฉันพบเพื่อให้บรรลุพฤติกรรมนี้คือ:
<div id="{{ 'object-' + myScopeObject.index }}"></div>
สำหรับการนำไปใช้ของฉันฉันต้องการให้แต่ละองค์ประกอบอินพุตใน ng-repeat กับแต่ละรายการมีรหัสเฉพาะเพื่อเชื่อมโยงป้ายกำกับ ดังนั้นสำหรับอาร์เรย์ของวัตถุที่อยู่ใน myScopeObjects เราสามารถทำได้:
<div ng-repeat="object in myScopeObject">
<input id="{{object.name + 'Checkbox'}}" type="checkbox">
<label for="{{object.name + 'Checkbox'}}">{{object.name}}</label>
</div>
ความสามารถในการสร้างรหัสที่ไม่ซ้ำกันในทันทีนั้นมีประโยชน์มากเมื่อเพิ่มเนื้อหาเช่นนี้แบบไดนามิก
คุณสามารถทำสิ่งต่อไปนี้ได้
ใน js ของคุณ
$scope.id = 0;
ในเทมเพลตของคุณ
<div id="number-{{$scope.id}}"></div>
ซึ่งจะทำให้
<div id="number-0"></div>
ไม่จำเป็นต้องต่อกันภายในวงเล็บปีกกาคู่
แค่ <input id="field_name_{{$index}}" />
หากคุณใช้ไวยากรณ์นี้:
<div ng-attr-id="{{ 'object-' + myScopeObject.index }}"></div>
เชิงมุมจะทำให้บางสิ่งเช่น:
<div ng-id="object-1"></div>
อย่างไรก็ตามไวยากรณ์นี้:
<div id="{{ 'object-' + $index }}"></div>
จะสร้างสิ่งที่ชอบ:
<div id="object-1"></div>
ng-attr-id
สร้างng-id
.. ? มันผิด ฉันสงสัยว่าผู้ที่สนับสนุนสิ่งนี้
myScopeObject
มาจากไหน? ฉันจะกำหนดมันที่ไหน