Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 为什么绑定表达式似乎没有';当使用的属性发生更改时,是否重新评估?_Angularjs - Fatal编程技术网

Angularjs 为什么绑定表达式似乎没有';当使用的属性发生更改时,是否重新评估?

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

我试图更好地理解AngularJs和它的摘要循环,我有点困惑为什么下面的代码不起作用

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}
输入第一个字符后,此代码将从显示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表达式,使用方式与在绑定表达式中相同。非常感谢,大卫!