为什么$ scope适用于某些表达式而不适用于其他表达式?

时间:2014-05-08 01:06:18

标签: javascript angularjs

我在控制器中有这个:

$scope.address = new Address();
$scope.hasAddress = $scope.address.street !== undefined && $scope.address.street.length > 0;

这个标记:

<p>{{address.street !== undefined && address.street.length > 0}}</p>
<p>{{hasAddress}}</p>

然后,间接通过一些包括:

<input type="text" ... ng-model="address.street" required>

当输入首次出现时,街道未​​定义,因此渲染的html说:

<p>false</p><p>false</p>

正如所料。但是当我在输入中输入字符时,html呈现为:

<p>true</p><p>false</p>

为什么hasAddress变量不更新?它由地址对象间接改变。这是我使用$ scope的情况。$ apply()? (哦,不,我不知道我在做什么的新事物。)

1 个答案:

答案 0 :(得分:2)

那是因为你的JS中没有任何内容告诉它更新。

添加到您的输入:ng-change="updateVar()",然后在您的JavaScript中:

$scope.updateVar = function() {
  $scope.hasAddress = $scope.address.street !== undefined && $scope.address.street.length > 0;
}