Avi*_*ade 4 javascript jquery onchange angularjs
我有一个后端对象,我从服务器收到并发送到服务器.我向用户授予更改后端对象的权限.我想确定后端对象是否已从保存点更改.
我怎么识别它?
例如:我有一个名为的模块
app.controller('PanelCtrl', function($scope, $http) {
$scope.action = "";
$scope.selectedItem = "";
$scope.compoundItem = [];
...
Run Code Online (Sandbox Code Playgroud)
我有对象的复合项数组.我想知道是否有变化是否在基元中发生了变化以及是否在复合项中...
编辑:两个场景1)客户端检查(原始帖子)2)服务器检查(根据评论扩展)
不要担心以下步骤的执行情况.如果您这样做,请在此处阅读有关性能的更多信息
答案是:angular.equals()此处描述了类似的场景: 开发人员指南/表单 (它与验证有关).在Binding to form和control状态一节中,我们可以看到脚本(提取):
function Controller($scope) {
$scope.master = {};
$scope.update = function(user) {
$scope.master = angular.copy(user);
};
$scope.reset = function() {
$scope.user = angular.copy($scope.master);
};
$scope.isUnchanged = function(user) {
return angular.equals(user, $scope.master);
};
}
Run Code Online (Sandbox Code Playgroud)
我们在这里看到的是我们所需要的.首先复制源状态(在更新函数内).我们可以随时改变isUchnaged,同时使用angular.equals()
还要检查Angular中的比较对象
注意:对angular.copy()的注释.我发现,在某些情况下,更好的是使用lo-dash .deepClone()
如果(如Dalorzo所期望的那样)在服务器,持久版本和客户端的比较中很有意思.如果我们想检查其他人是否已经改变了"实体" ,那么这是有道理的.在其他一些交易中
通常有很多技术,但最有效的是版本控制.在持久层上,我们必须引入一些值,每次执行"更新"时都会更改/递增.在MS SQL Server的情况下,它将是rowversion,在这里看到更多
然后,在任何sucesfull UPDATE操作期间,此版本将被更改,并且我们知道客户端上的数据是陈旧的......服务器上有更新的版本.
版本摘要:
我们的检查非常简单:
这是我与NHiberante一起使用的标准方法(在这里阅读更多)