Angularjs ng init有条件地赋值

Angularjs ng init有条件地赋值,angularjs,Angularjs,我发现了ng init的意外行为。根据doc的规定,ngInit指令允许您计算当前范围内的表达式。因此我尝试有条件地在变量中赋值。这是我的密码 <a ng-href="#" ng-click="flag = !flag;" ng-init="data = (flag == true) ? 'Value For Success' : 'Value for false'; "> {{data}}</a> 若在表达式中,我通过了false,那个么将为变量赋值为false;

我发现了
ng init
的意外行为。根据doc
的规定,ngInit指令允许您计算当前范围内的表达式。
因此我尝试有条件地在变量中赋值。这是我的密码

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

若在表达式中,我通过了
false
,那个么将为变量赋值为false;若我通过了
true
,那个么将为变量赋值为true。我可以通过调用一个函数来实现它,但我想如果我可以在一行中赋值,那么为什么我需要为此编写一个函数呢。请说明我遗漏了什么

检查我的

为什么

ngInit的唯一适当用途是对ngRepeat的特殊属性进行别名处理,如下面的演示所示。除此之外,应该使用控制器而不是ngInit来初始化作用域上的值

请参阅文档

就你而言


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

您也可以尝试使用ng case或ng if,它可以根据以下条件为{{data}赋值

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

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

OK。。明白你的意思了。这一行是有意义的
ng init仅执行一次,因此无法更改数据范围变量
:-)是否有任何原因使我无法在页面上的某个位置使用ng if初始化选择默认值?在测试中,它似乎起了作用。。。。在我的例子中,当数组只有一个选项可供选择时,init正在设置一个select/option默认值。您确定
ng case
存在吗?顺便说一句,如果
不像你说的那样工作,
ng:(Y,抱歉,ng if用于显示元素。我的错误^^第二个错误:它是ng switch(这个开关案例让我觉得很糟糕!)请用英语提供答案。谢谢。ng-bind用于显示值,而不是用于init