ng-init有条件地分配值

时间:2015-07-06 10:40:01

标签: angularjs

我发现了ng-init的意外行为。根据文档The ngInit directive allows you to evaluate an expression in the current scope.所以我试图有条件地在变量中赋值。这是我的代码

<a ng-href="#" ng-click="flag = !flag;" ng-init="data = (flag == true) ? 'Value For Success' : 'Value for false'; "> {{data}}</a>

如果在表达式中我传递false,则会将false值赋给变量,如果我传递true,则会分配真值。我可以通过调用函数来实现它,但我想如果我可以在一行中赋值,那么为什么我需要为此编写函数。请提出我缺少的内容?

检查我的fiddle

3 个答案:

答案 0 :(得分:4)

为什么ng-init

  

ngInit的唯一合适用途是用于别名ngRepeat的特殊属性,如下面的演示所示。除了这种情况,您应该使用控制器而不是ngInit来初始化作用域上的值。

请参阅文档。

在你的情况下,

如果您使用ng-init="data = (flag == true) ? 'Value For Success' : 'Value for false'; " angular,则会创建一个名为data的范围变量,并根据条件将其初始化为'Value For Success''Value for false'ng-init只执行一次,因此无法更改data范围变量。

答案 1 :(得分:0)

您还可以尝试使用ng-case或ng-if,它可以根据您的以下条件为您的{{data}}分配值。

答案 2 :(得分:-3)

ng-bind="{1:'Text One', 2:'Text Two',3:'Text Three'}[variable]"

变量,在这种情况下它是数字的,根据它包含的值,它将加载文本......