ฉันพยายามที่จะสลับชั้นขององค์ประกอบที่ใช้ ng-class
<button class="btn">
<i ng-class="{(isAutoScroll()) ? 'icon-autoscroll' : 'icon-autoscroll-disabled'}"></i>
</button>
isAutoScroll ():
$scope.isAutoScroll = function()
{
$scope.autoScroll = ($scope.autoScroll) ? false : true;
return $scope.autoScroll;
}
โดยทั่วไปถ้า$scope.autoScroll
เป็นจริงฉันต้องการ ng-class เป็นicon-autoscroll
และถ้ามันเป็นเท็จฉันต้องการให้เป็นicon-autoscroll-disabled
สิ่งที่ฉันมีตอนนี้ไม่ทำงานและกำลังสร้างข้อผิดพลาดนี้ในคอนโซล
Error: Lexer Error: Unexpected next character at columns 18-18 [?] in expression [{(isAutoScroll()) ? 'icon-autoscroll' : 'icon-autoscroll-disabled'}].
ฉันจะทำอย่างถูกต้องได้อย่างไร
แก้ไข
โซลูชันที่ 1: (ล้าสมัย)
<button class="btn" ng-click="autoScroll = !autoScroll">
<i ng-class="{'icon-autoscroll': autoScroll, 'icon-autoscroll-disabled': !autoScroll}"></i>
</button>
แก้ไข 2
โซลูชันที่ 2:
ฉันต้องการอัปเดตโซลูชันSolution 3
ตามที่ Stewie จัดหาให้ควรใช้ มันเป็นมาตรฐานมากที่สุดเมื่อพูดถึงผู้ประกอบการที่สาม (และสำหรับฉันที่ง่ายที่สุดในการอ่าน) ทางออกจะเป็นอย่างไร
<button class="btn" ng-click="autoScroll = !autoScroll">
<i ng-class="autoScroll ? 'icon-autoscroll' : 'icon-autoscroll-disabled'"></i>
</button>
แปลเป็น:
if (autoScroll == true) ?
// ใช้คลาส'icon-autoscroll' :
// ใช้อย่างอื่น'icon-autoscroll-disabled'
autoScroll
นี่จะมีผลในแต่ละปุ่ม? (ฉันทดสอบมันด้วยปุ่มหลายปุ่มและทำงานได้ดีเช่นกัน) ฉันหมายถึงเมื่อฉันคลิกแต่ละปุ่มมันจะมีผลเพียงปุ่มนั้นแทนที่จะเป็นปุ่มทั้งหมด
angular expressions
เอกสารต่อ => ไม่มีคำสั่งควบคุมการไหล:คุณไม่สามารถดำเนินการใด ๆ ต่อไปนี้ในนิพจน์เชิงมุม: เงื่อนไขวงวนหรือโยน ใช้ฟังก์ชั่นหรือคำสั่งอื่น