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

Angularjs 检查角度中是否存在模型绑定,angularjs,Angularjs,我有这样一个AngularJS模型: $scope.model = {name: "Joe", isMale: true}; 在视图中,我将model.isMale绑定到一个复选框 现在我请求后端进行更新($http.get())。在onSuccess回调中,我只需将响应值分配给$scope.model。如果后端未向我发送整个模型,例如未发送isMale标志,$scope.model不再具有isMale标志。当我稍后在UI中更改名称并将这些数据发送到后端时,标志isMale不再发送到后端,因为

我有这样一个AngularJS模型:

$scope.model = {name: "Joe", isMale: true};
在视图中,我将model.isMale绑定到一个复选框

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


谢谢

您可以
扩展
您的模型,并用api响应中的值覆盖您的默认模型值。这样,只有在api响应中存在默认值时,才会覆盖默认值:

angular.extend($scope.model, response)
对于浅拷贝,或

angular.merge($scope.model, response)
对于深度(递归)复制

这应该适用于您的场景


关于
angular.copy()
,“angular.extend()”和
angular.merge()
之间差异的复杂细节,请参见此处:

您可以
扩展您的模型,并用api响应中的值覆盖默认模型值。这样,只有在api响应中存在默认值时,才会覆盖默认值:

angular.extend($scope.model, response)
对于浅拷贝,或

angular.merge($scope.model, response)
对于深度(递归)复制

这应该适用于您的场景


请务必在此处查阅
angular.copy()
,“angular.extend()”和
angular.merge()
之间差异的复杂细节:

如果需要深度复制,请使用
angular.merge
,如果需要深度复制,请使用
angular.merge