แมวหลายพันวิธี ฉันรู้ว่าคุณกำลังถามเกี่ยวกับ {{}} ระหว่างกัน แต่สำหรับคนอื่นที่มาที่นี่ฉันคิดว่ามันคุ้มค่าที่จะแสดงตัวเลือกอื่น ๆ
ฟังก์ชันในขอบเขต $ ของคุณ(IMO นี่คือทางออกที่ดีที่สุดของคุณในสถานการณ์ส่วนใหญ่):
app.controller('MyCtrl', function($scope) {
$scope.foo = 1;
$scope.showSomething = function(input) {
return input == 1 ? 'Foo' : 'Bar';
};
});
<span>{{showSomething(foo)}}</span>
แน่นอน ng-show และ ng-hide แน่นอน:
<span ng-show="foo == 1">Foo</span><span ng-hide="foo == 1">Bar</span>
ngSwitch
<div ng-switch on="foo">
<span ng-switch-when="1">Foo</span>
<span ng-switch-when="2">Bar</span>
<span ng-switch-default>What?</span>
</div>
ตัวกรองที่กำหนดเองตามที่แนะนำเบอร์แทรนด์ (นี่เป็นตัวเลือกที่ดีที่สุดของคุณหากคุณต้องทำสิ่งเดียวกันซ้ำแล้วซ้ำอีก)
app.filter('myFilter', function() {
return function(input) {
return input == 1 ? 'Foo' : 'Bar';
}
}
{{foo | myFilter}}
หรือคำสั่งที่กำหนดเอง:
app.directive('myDirective', function() {
return {
restrict: 'E',
replace: true,
link: function(scope, elem, attrs) {
scope.$watch(attrs.value, function(v) {
elem.text(v == 1 ? 'Foo': 'Bar');
});
}
};
});
<my-directive value="foo"></my-directive>
โดยส่วนตัวแล้วในกรณีส่วนใหญ่ฉันจะไปกับฟังก์ชั่นในขอบเขตของฉันมันทำให้มาร์กอัพสะอาดมากและใช้งานง่ายและรวดเร็ว เว้นแต่ว่าคุณจะทำสิ่งเดียวกันซ้ำแล้วซ้ำอีกในกรณีนี้ฉันจะไปกับคำแนะนำของเบอร์แทรนด์และสร้างตัวกรองหรือคำสั่งอาจขึ้นอยู่กับสถานการณ์
และเช่นเคยสิ่งที่สำคัญที่สุดคือว่าการแก้ปัญหาของคุณเป็นเรื่องง่ายที่จะรักษาและเป็นทดสอบหวังว่า และนั่นจะขึ้นอยู่กับสถานการณ์ของคุณโดยเฉพาะ