检查是否存在角度模型绑定

时间:2016-04-26 05:57:28

标签: angularjs

我有一个像这样的AngularJS模型:

$scope.model = {name: "Joe", isMale: true};

在视图中,我将model.isMale绑定到一个复选框。

现在我要求后端进行更新($ http.get())。在onSuccess回调中,我只是将响应值分配给$ scope.model。如果后端没有向我发送整个模型,例如不发送isMale标志,$ scope.model不再具有isMale标志。当我稍后在UI中更改名称并将这些数据发送到后端时,标志isMale不再发送到后端,因为模型不包含它。有没有办法检查视图元素是否'模型绑定确实存在?有没有比用后端获得的值覆盖模型更好的解决方案?

由于

1 个答案:

答案 0 :(得分:2)

您可以extend您的模型,并使用api响应中的一个覆盖您的默认模型值。这样,只有在api响应中出现默认值时才会覆盖默认值:

angular.extend($scope.model, response)

用于浅拷贝,或

angular.merge($scope.model, response)

用于深度(递归)复制

这应该适用于你的场景

请在此处参考angular.copy(),'angular.extend()'和angular.merge()之间差异的复杂细节:http://davidcai.github.io/blog/posts/copy-vs-extend-vs-merge/