为什么看起来绑定表达式在它使用的属性发生变化时不会重新评估?

时间:2014-03-23 00:37:00

标签: angularjs

我正在努力更好地理解AngularJs和它的摘要周期,我对以下代码无效的原因感到有点困惑。

的jsfiddle http://jsfiddle.net/RyanVice/3u2dp/

代码

<div ng-app>
    <input type="text" ng-model="input1"/>
    <input type="text" ng-mode="input2"/>
    {{ input1 === input2 }}
</div>

输入第一个字符后,此代码将从显示true更改为false,然后停止响应任一输入框中的更改。为什么不继续重新评估?

修改

哇,多么尴尬,但感谢帮助我发现错字。我有一个相关的跟进问题。

如果我现在想要显示或隐藏字体真棒图标,似乎我可以使用具有相同绑定表达式的ng-show。但是下面的JsFiddle只评估第一次加载时的绑定表达式。看起来它在编译时对它进行了评估(可以通过将===更改为!===来验证),但再也不会。我知道如果我引入一个控制器,我可以使这项工作,但我正在努力更好地理解绑定表达式和摘要周期的基础知识。知道为什么这不起作用吗?

的jsfiddle http://jsfiddle.net/RyanVice/3u2dp/1/

代码

<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>

2 个答案:

答案 0 :(得分:0)

这是因为你有一个错字。以下代码有效:

<div ng-app>
    <input type="text" ng-model="input1"/>
    <input type="text" ng-model="input2"/>
    {{ input1 === input2 }}
</div>

将原始代码中的ng-mode="input2"更改为ng-model="input2"

答案 1 :(得分:0)

在第二次输入时将ng-mode更改为ng-model:)

我只是在小提琴中试过这个,它运行正常!