Javascript 在复选框上使用去盎司

Javascript 在复选框上使用去盎司,javascript,angularjs,Javascript,Angularjs,我正在处理用于过滤一组数据的多个复选框。但是,我不希望复选框在每次单击复选框后都触发过滤器,因此我希望取消对其进行筛选。可能在选中最后一个复选框后等待500毫秒到一秒钟 查看我的 在这里,它基本上只是对复选框单击选项进行排队,并每隔几秒钟更改模型,但我希望它同时更改这两个选项。我怎样才能做到这一点 谢谢 您可以在应用程序控制器中使用$scope.$watch来控制多个模型属性更改的结果$watch不仅可以计算单个属性,还可以计算表达式;然后可以取消回叫;稍后通过调用$scope.$apply

我正在处理用于过滤一组数据的多个复选框。但是,我不希望复选框在每次单击复选框后都触发过滤器,因此我希望取消对其进行筛选。可能在选中最后一个复选框后等待500毫秒到一秒钟

查看我的


在这里,它基本上只是对复选框单击选项进行排队,并每隔几秒钟更改模型,但我希望它同时更改这两个选项。我怎样才能做到这一点


谢谢

您可以在应用程序控制器中使用
$scope.$watch
来控制多个模型属性更改的结果
$watch
不仅可以计算单个属性,还可以计算表达式;然后可以取消回叫;稍后通过调用
$scope.$apply
通知angular所需的更改

$scope.$watch('user.lame + user.cool', _.debounce(function (id) {
   $scope.$apply(function() {
      //code that updates UI
   })
}, 1000));
也请查看此帖子:


以下是更新的plunk:

您可以在应用程序控制器中使用
$scope.$watch
来控制多个模型属性更改的结果
$watch
不仅可以计算单个属性,还可以计算表达式;然后可以取消回叫;稍后通过调用
$scope.$apply
通知angular所需的更改

$scope.$watch('user.lame + user.cool', _.debounce(function (id) {
   $scope.$apply(function() {
      //code that updates UI
   })
}, 1000));
也请查看此帖子:


以下是更新后的plunk:

您可以使用angular的$watchCollection方法,它也会这样做。不需要额外费用

(function(angular) {
  'use strict';
  angular.module('optionsExample', [])
    .controller('ExampleController', ['$scope',
      function($scope) {
        $scope.user = {
          name: 'Igor'
        };
        $scope.$watchCollection('user', function(n, o) {

          console.log(n);
        });
      }
    ]);
})(window.angular);
更简洁的形式,一个去盎司定义,您的形式如下所示:

<form name="userForm" ng-model="user" ng-model-options="{ debounce: 1000 }">
  <label>Name:
    <input type="text" name="userName" ng-model="user.name" />
    <input type="checkbox" ng-model="user.cool" />
    <input type="checkbox" ng-model="user.lame" />
  </label>
  <button ng-click="userForm.userName.$rollbackViewValue(); user.name=''">Clear</button>
  <br />
</form>

姓名:
清楚的


您可以使用angular的$watchCollection方法,它也会这样做。不需要额外费用

(function(angular) {
  'use strict';
  angular.module('optionsExample', [])
    .controller('ExampleController', ['$scope',
      function($scope) {
        $scope.user = {
          name: 'Igor'
        };
        $scope.$watchCollection('user', function(n, o) {

          console.log(n);
        });
      }
    ]);
})(window.angular);
更简洁的形式,一个去盎司定义,您的形式如下所示:

<form name="userForm" ng-model="user" ng-model-options="{ debounce: 1000 }">
  <label>Name:
    <input type="text" name="userName" ng-model="user.name" />
    <input type="checkbox" ng-model="user.cool" />
    <input type="checkbox" ng-model="user.lame" />
  </label>
  <button ng-click="userForm.userName.$rollbackViewValue(); user.name=''">Clear</button>
  <br />
</form>

姓名:
清楚的


您希望从一个位置将它们全部取消公告吗?不确定你想要的结果是什么?这可能不是我在上面发布的正确方式。我的预期行为是,您快速选中这两个框,模型会在等待一秒钟(或等待多长时间)后同时更新user.cool和user.lame您希望它们从一个位置全部取消公告吗?不确定你想要的结果是什么?这可能不是我在上面发布的正确方式。我的预期行为是,您快速选中这两个复选框,模型会在等待一秒钟(或等待多长时间)后同时更新user.cool和user.lame对不起,正确的链接是-因此我的表单在formData对象中有很多复选框。我是否可以只查看formData对象本身,而不必显式地用+?写出每个属性?这里的plunkre帽子说明了我更喜欢的内容,但它不能像预期的那样工作$watch(“用户”不起作用,尝试访问单独的属性我不知道给谁答案!@alpha谢谢!抱歉,正确的链接是-因此我的表单有很多复选框,它们位于formData对象中。我可以只查看formData对象本身,而不必显式地用+?写出每个属性吗?这里是plunkre,它说明了在我更愿意,但它没有像预期的那样工作$watch('用户'不工作,尝试访问单独的道具我不知道给谁答案!@alpha谢谢!