AngularJS - 初始值为null时绑定在更新后不会更新

时间:2016-05-26 20:36:40

标签: javascript angularjs

我遇到的情况是我的绑定没有更新,我想我明白为什么会发生这种情况,但我不确定如何解决它。

在我的控制器中,我有一个company对象,其属性为user,可能包含也可能不包含该用户。该用户是另一个对象。

只有当我没有公司用户时才会发生这种情况。当我在模板上显示用户名时,我会执行{{ companyCtrl.company.user.name || 'N/A' }}。因此,它将显示N/A,因为没有用户。然后我会分配一个用户并在响应中更新company.user,使其不再为空。

但是,在我的模板中,它仍会显示N/A。我假设是因为最初没有用户,没有绑定?

但我并不积极。如果我在加载页面时已经有用户,并且只是更改了用户,则名称将在模板中更新。

3 个答案:

答案 0 :(得分:0)

如果更新范围之外的范围值(例如在jQuery回调上),您应该调用$scope.$apply()$scope.$digest()$scope.$evalAsync()让角度消化您的数据。

答案 1 :(得分:0)

我发现这很难解释,但是 - 当你将companyCtrl.company.user分配给一个新对象时,模板中对companyCtrl.company.user.name的引用仍然指向原始对象,仍然是空的。如果您希望这样做,您可以将companyCtrl.company.user的属性分配给您要分配给的用户中找到的值,而不是整个对象。

答案 2 :(得分:0)

这是因为摘要在模型更新之前运行。要强制摘要,您可以将代码置于$ timeout内。