Angularjs 为什么绑定表达式似乎没有';当使用的属性发生更改时,是否重新评估?
我试图更好地理解AngularJs和它的摘要循环,我有点困惑为什么下面的代码不起作用 JsFiddle 代码Angularjs 为什么绑定表达式似乎没有';当使用的属性发生更改时,是否重新评估?,angularjs,Angularjs,我试图更好地理解AngularJs和它的摘要循环,我有点困惑为什么下面的代码不起作用 JsFiddle 代码 <div ng-app> <input type="text" ng-model="input1"/> <input type="text" ng-mode="input2"/> {{ input1 === input2 }} </div> <div ng-app> <input typ
<div ng-app>
<input type="text" ng-model="input1"/>
<input type="text" ng-mode="input2"/>
{{ input1 === input2 }}
</div>
<div ng-app>
<input type="text" ng-model="input1"/>
<input type="text" ng-model="input2"/>
<span class="glyphicon glyphicon-ok" ng-show="{{ input1 === input2 }}"></span>
{{ input1 === input2 }}
</div>
{{input1===input2}
输入第一个字符后,此代码将从显示true更改为false,但随后停止响应任一输入框中的更改。为什么不继续重新评估
编辑
哇,太尴尬了,但谢谢你帮我发现那个打字错误。我有一个相关的后续问题
如果我现在想显示或隐藏一个字体很棒的图标,我似乎可以使用具有相同绑定表达式的ng show。但是,下面的JSFIDLE仅在第一次加载时计算绑定表达式。它似乎在编译时对其求值(可以通过将===更改为!===)进行验证,但不会再次求值。我知道如果我引入一个控制器,我就可以做到这一点,但我正试图更好地理解绑定表达式和摘要周期的基础知识。你知道为什么这样不行吗
JsFiddle
代码
<div ng-app>
<input type="text" ng-model="input1"/>
<input type="text" ng-mode="input2"/>
{{ input1 === input2 }}
</div>
<div ng-app>
<input type="text" ng-model="input1"/>
<input type="text" ng-model="input2"/>
<span class="glyphicon glyphicon-ok" ng-show="{{ input1 === input2 }}"></span>
{{ input1 === input2 }}
</div>
{{input1===input2}
这是因为你的打字错误。以下代码有效:
<div ng-app>
<input type="text" ng-model="input1"/>
<input type="text" ng-model="input2"/>
{{ input1 === input2 }}
</div>
{{input1===input2}
将原始代码中的
ng mode=“input2”
更改为ng model=“input2”
。在第二次输入时将ng mode
更改为ng model
)
我刚在小提琴上试过,效果很好 谢谢。你能帮我回答我的后续问题吗?你的后续问题是什么?我在上面加的。没想到你反应这么快,对不起。在
ng show
中不需要{{}
:ng show=“{{input1==input2}}”
应该是ng show=“input1==input2”
。哦,我明白了。因此,只有在指令外部绑定时才需要绑定表达式语法。在设置指令属性时,可以使用AngularJS表达式,使用方式与在绑定表达式中相同。非常感谢,大卫!