Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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
Javascript 将复选框绑定到角度模型阵列_Javascript_Arrays_Angularjs_Checkbox - Fatal编程技术网

Javascript 将复选框绑定到角度模型阵列

Javascript 将复选框绑定到角度模型阵列,javascript,arrays,angularjs,checkbox,Javascript,Arrays,Angularjs,Checkbox,我想直接以角度将复选框列表绑定到数组,这样当选中复选框时,它的值会被推送到数组上,而当未选中时,它会弹出,这样模型上的数组总是表示我想要的最终状态。以前,我是通过将复选框映射到数组索引来实现的,后来剥离出null值,但我想尝试另一种方法 我希望停止直接绑定到模型,但只需在更新复选框时运行一个函数,该函数处理将数据放入数组的操作 这种方法有什么问题吗 从控制器更新模型时,是否有任何必须注意的注意事项 HTML(角度) 演示: 我希望停止直接绑定到模型,但只需在更新复选框时运行一个函数,该函数处理将

我想直接以角度将复选框列表绑定到数组,这样当选中复选框时,它的值会被推送到数组上,而当未选中时,它会弹出,这样模型上的数组总是表示我想要的最终状态。以前,我是通过将复选框映射到数组索引来实现的,后来剥离出
null
值,但我想尝试另一种方法

我希望停止直接绑定到模型,但只需在更新复选框时运行一个函数,该函数处理将数据放入数组的操作

  • 这种方法有什么问题吗
  • 从控制器更新模型时,是否有任何必须注意的注意事项
  • HTML(角度)

    演示: 我希望停止直接绑定到模型,但只需在更新复选框时运行一个函数,该函数处理将数据放入数组的操作

    这是一种角度的能力,允许您轻松管理对象(表示您的复选框列表)。代码更少,而且易于维护。然而,在某些情况下,我们希望跟踪变化并做其他事情(我的意思是除了检查/取消检查操作之外)

    例如:

     $scope.toggleSelect = function toggleSelect(code)
     {
      /**/
     AsyncService.doStuff();
     }
    
    这种方法有什么问题吗

    没什么错,但这个aproach(在您的例子中)类似于javascript native。所以我们失去了角度优势。 我将使用模型绑定并在
    $scope.options
    (甚至
    $watchCollection
    )上实现
    $watch
    )。比如:

    $scope.$watch(function () {
        return $scope.options; // listen on model watch
    },
    function (newValue, oldValue) {
        /* any checkbox clicked */
    }, true);
    
    从控制器更新模型时,是否有任何必须注意的注意事项

    别这么想,很简单的流程

     $scope.toggleSelect = function toggleSelect(code)
     {
      /**/
     AsyncService.doStuff();
     }
    
    $scope.$watch(function () {
        return $scope.options; // listen on model watch
    },
    function (newValue, oldValue) {
        /* any checkbox clicked */
    }, true);