How would you change an html
attribute based on the model?
I\'m trying to change an input\'s placeholder text based on a length of an array:
The ternary operator doesn't seem to work in this case, instead of doing this
{{cond ? true : false}}
Change it to
{{ exp && true || false }}
So your placeholder
attribute would look like this (I have shortened it for demonstration purposes)
placeholder="{{todos.length > 0 && 'Insert' || 'Insert first'}}"
For anyone else who comes across this (like I just did via Google), it looks like Angular recently added support for the ternary operator in expressions. I just used it successfully in 1.2.16 to dynamically update a tooltip (title) attribute. It seems to have first appeared in the documentation for 1.2.17, although they still generally discourage its use:
From: AngularJS: Developer Guide: Expressions
Apart from the ternary operator (a ? b : c), you cannot write a control flow statement in an expression. The reason behind this is core to the Angular philosophy that application logic should be in controllers, not the views. If you need a real conditional, loop, or to throw from a view expression, delegate to a JavaScript method instead.