19

您将如何html根据模型更改属性?

我正在尝试根据数组的长度更改输入的占位符文本:

<input placeholder="{{todos.length ? 'Insert todo' : 'Insert your first todo'}}" />

但这似乎不起作用...

JS Bin 代码示例

4

2 回答 2

26

三元运算符在这种情况下似乎不起作用,而不是这样做

{{cond ? true : false}}

将其更改为

{{ exp && true || false }}

所以你的placeholder属性看起来像这样(为了演示目的,我已经缩短了它)

placeholder="{{todos.length > 0 && 'Insert' || 'Insert first'}}"
于 2012-12-08T21:06:00.350 回答
10

对于遇到这种情况的其他人(就像我刚刚通过 Google 所做的那样),看起来 Angular 最近在表达式中添加了对三元运算符的支持。我刚刚在 1.2.16 中成功使用它来动态更新一个工具提示(标题)属性。它似乎首先出现在 1.2.17 的文档中,尽管他们仍然普遍不鼓励使用它:

来自:AngularJS:开发者指南:表达式

除了三元运算符 (a ? b : c),您不能在表达式中编写控制流语句。这背后的原因是 Angular 哲学的核心,即应用程序逻辑应该在控制器中,而不是视图中。如果您需要真正的条件、循环或从视图表达式中抛出,请改为委托给 JavaScript 方法。

于 2014-06-18T15:58:31.823 回答