Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 将复选框绑定到更新数据_Angularjs - Fatal编程技术网

Angularjs 将复选框绑定到更新数据

Angularjs 将复选框绑定到更新数据,angularjs,Angularjs,我试图将html复选框绑定到不断更新的数据 以前,我在Angular中使用过复选框,将复选框绑定到如下属性 但是,由于数据总是在更新,用户设置的复选框值会被覆盖,因为更新的数据会覆盖isSelected值 我的问题的一个例子就在这里 我正在想其他方法来处理这个问题-以前有人处理过is吗?只需替换更改的值,而不是整个对象。这样,所选状态不会因间隔函数而改变 function ReasonCtrl($scope, $http) { $scope.rows = [{id : 1, isSel

我试图将html复选框绑定到不断更新的数据

以前,我在Angular中使用过复选框,将复选框绑定到如下属性

但是,由于数据总是在更新,用户设置的复选框值会被覆盖,因为更新的数据会覆盖isSelected值

我的问题的一个例子就在这里


我正在想其他方法来处理这个问题-以前有人处理过is吗?

只需替换更改的值,而不是整个对象。这样,所选状态不会因间隔函数而改变

function ReasonCtrl($scope, $http) {
   $scope.rows = [{id : 1, isSelected : false, date : new Date().getTime()},{id : 2, isSelected : false,  date : new Date().getTime()}];
    setInterval(function() {
        for (var i = 0; i < $scope.rows.length; ++i) {
            $scope.rows[i].date = new Date().getTime();
        }
        $scope.$apply();
    }, 200);  

}
函数ReasonCtrl($scope,$http){
$scope.rows=[{id:1,isSelected:false,date:new date().getTime()},{id:2,isSelected:false,date:new date().getTime()}];
setInterval(函数(){
对于(变量i=0;i<$scope.rows.length;++i){
$scope.rows[i].date=new date().getTime();
}
$scope.$apply();
}, 200);  
}

您可以在此处找到一个更新的fiddle:

您可以更新现有对象属性,而不是替换对象。确实,这似乎有点像黑客,并且随着对象的变化需要维护。(显然,我的示例是人为设计的,数据实际上来自REST端点)。为什么不能在用户进行更改时更新服务器,以便新数据反映用户交互?您可以尝试类似
{selected:false,data:{//data is server object}
的结构。这种方法不需要复制属性,而是找到记录并替换它。@GrahamB不过,不更新整个对象是最干净的解决方案。您还可以简单地创建一个子对象,并对其进行更新,即
{isSelect:true,actualDataObject:{…}}