我遇到的情况是我的绑定没有更新,我想我明白为什么会发生这种情况,但我不确定如何解决它。
在我的控制器中,我有一个company
对象,其属性为user
,可能包含也可能不包含该用户。该用户是另一个对象。
只有当我没有公司用户时才会发生这种情况。当我在模板上显示用户名时,我会执行{{ companyCtrl.company.user.name || 'N/A' }}
。因此,它将显示N/A
,因为没有用户。然后我会分配一个用户并在响应中更新company.user
,使其不再为空。
但是,在我的模板中,它仍会显示N/A
。我假设是因为最初没有用户,没有绑定?
但我并不积极。如果我在加载页面时已经有用户,并且只是更改了用户,则名称将在模板中更新。
答案 0 :(得分:0)
如果更新范围之外的范围值(例如在jQuery回调上),您应该调用$scope.$apply()
或$scope.$digest()
或$scope.$evalAsync()
让角度消化您的数据。
答案 1 :(得分:0)
我发现这很难解释,但是 - 当你将companyCtrl.company.user分配给一个新对象时,模板中对companyCtrl.company.user.name的引用仍然指向原始对象,仍然是空的。如果您希望这样做,您可以将companyCtrl.company.user的属性分配给您要分配给的用户中找到的值,而不是整个对象。
答案 2 :(得分:0)
这是因为摘要在模型更新之前运行。要强制摘要,您可以将代码置于$ timeout内。