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