AngularJs的ng-show/hide按钮触发器
AngularJs ng-show/hide button trigger
我的目标:根据其ng-repeat复选框状态显示/隐藏div的按钮。恰好
<button ng-click="toggleIt()">Toggle it</button>
<p>Check all</p>
<input type="checkbox" ng-model="selectAll" ng-click="checkAll()" />
<br />
<p>Checkboxes</p>
<input type="checkbox" ng-repeat="c in checkbox" ng-model="checkbox[$index].selected">
<div ng-show="checkbox[0].selected && shownow">Slave one showed!</div>
<div ng-show="checkbox[1].selected && shownow">Slave two showed!</div>
<div ng-show="checkbox[2].selected && shownow">Slave three showed!</div>
app.controller('MainCtrl', function($scope) {
$scope.checkbox = [{
selected: false
}, {
selected: false
}, {
selected: false
}];
// Check/uncheck all boxes
$scope.checkAll = function() {
angular.forEach($scope.checkbox, function(obj) {
obj.selected = $scope.selectAll;
$scope.shownow = false;
});
};
$scope.shownow = false;
$scope.toggleIt = function() {
$scope.shownow = true;
}
$scope.$watchGroup(['checkbox[0].selected', 'checkbox[1].selected', 'checkbox[2].selected'], function(newValue, oldValue) {
if (newValue != oldValue) {
$scope.shownow = false;
}
});
});
问题:当我取消选中一个复选框后,div消失了。
Js文件
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.checkbox = [
{
selected: false
},
{
selected: false
},
{
selected: false
}
];
// Check/uncheck all boxes
$scope.checkAll = function () {
angular.forEach($scope.checkbox, function (obj) {
obj.selected = $scope.selectAll;
$scope.shownow = true;
});
};
$scope.toggleIt = function(){
$scope.shownow = !$scope.shownow;
$scope.selectAll = ! $scope.selectAll
$scope.checkAll();
}
});
Html文件
<!DOCTYPE html>
<html ng-app="plunker">
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<script>document.write('<base href="' + document.location + '" />');</script>
<link rel="stylesheet" href="style.css" />
<script data-require="angular.js@1.4.x" src="https://code.angularjs.org/1.4.3/angular.js" data-semver="1.4.3"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
<button ng-click="toggleIt()">Toggle it</button>
<p>Check all</p>
<input type="checkbox" ng-model="selectAll" ng-click="checkAll()" />
<br />
<p>Checkboxes</p>
<input type="checkbox" ng-repeat="c in checkbox" ng-model="checkbox[$index].selected">
<div ng-show="checkbox[0].selected && shownow">Slave one showed!</div>
<div ng-show="checkbox[1].selected && shownow">Slave two showed!</div>
<div ng-show="checkbox[2].selected && shownow">Slave three showed!</div>
</body>
</html>
请参考更新的小提琴:"http://plnkr.co/edit/7GXqApEjfPkZFsQeLbQM?p =预览"
您专门为复选框创建了监视,并在发生任何更改时隐藏div,但您称之为问题…
$scope.$watchGroup(['checkbox[0].selected', 'checkbox[1].selected', 'checkbox[2].selected'], function(newValue, oldValue) {
if (newValue != oldValue) {
$scope.shownow = false;
}
});
移除这个部分是否达到了你想要的效果?
用||
来更新
<div ng-show="checkbox[0].selected || shownow">Slave one showed!</div>
<div ng-show="checkbox[1].selected || shownow">Slave two showed!</div>
<div ng-show="checkbox[2].selected || shownow">Slave three showed!</div>
我已经更新了你的活塞。请检查柱塞
请将方法更改如下:
$scope.toggleIt = function(){
$scope.shownow = !$scope.shownow;
}
你也可以不添加观察者
这应该可以工作(非常干净的方法)。请参考
UPDATE PLNKR:
http://plnkr.co/edit/WN9ohx?p =预览
根据原文评论中明确的要求回答:
Angular模型绑定是实时工作的:当你点击一个复选框时,它总是会立即反映更改。若要将更新延迟到下次点击按钮时,您可以将显示的结果存储在其他变量中,并在需要更改时进行更新。
$scope.showDivs = $scope.checkbox.map(function(item){
return item.selected;
});
<div ng-show="showDivs[0]">Slave one showed!</div>
<div ng-show="showDivs[1]">Slave two showed!</div>
<div ng-show="showDivs[2]">Slave three showed!</div>
恰好
相关文章:
- 有没有一种方法可以检测ios<>使用jquery和触发器操作形成导航按钮
- jQuery-On按钮点击触发器选择选项
- 如何为滑块的分页按钮创建简单的下一个和上一个触发器按钮
- 尝试使用jquery设置鼠标按下的时间来更改按钮触发器以控制音量滑块
- 触发器快捷方式”;STRG+Plus按钮”;使用Javascript
- 通过事件触发器/按钮单击将参数传递给 javascript 函数
- 使用jquery提交表单,该表单具有多个提交按钮,无需单击触发器
- 按钮触发器未被调用
- IE 错误触发器单击以 2 个按钮
- 检测后退按钮触发器(使用 Ajaxify 和 History.js)
- 当触发器按钮使用 jquery 和 ajax 时,无法更新会话
- 一个模式有多个按钮(触发器)
- 触发器Ctrl+z&Ctrl+y键单击按钮
- 触发器提示's以编程方式单击“确定”按钮
- 输入触发器html按钮点击带有特定值的javascript
- 茉莉触发器按钮事件
- 在Jquery UI对话框中基于触发器锚点的文本创建动态按钮名称
- Jquery按钮触发器css
- 我可以添加HTML按钮触发器更新面板
- AngularJs的ng-show/hide按钮触发器