我目前正在将我们的角度js的应用版本从1.0.8升级到最新的稳定版本并遇到一个有趣的问题。
我们有一组用于过滤信息的复选框,通常选项包括:
希望点击时选中“全部”复选框,保持选中状态。它将执行额外的逻辑来确定是否选中了其他复选框,如果它们是,则将其检查状态切换为关闭状态。我用1.0.8完成了这个,但没有最新版本的角度。
在最基本的设置中,我们只有一个复选框,其中ng-model值设置为某个布尔范围变量,ng-click定义为某个函数。
我有一个plunker演示,可以在1.0.8和1.2.18之间切换以说明更改,在这里:http://plnkr.co/edit/WaTj6e33x4SZ2NkKStsC?p=info
HTML:
<body ng-app='example' ng-controller="mainCtrl">
<h1>Hello Plunker!</h1>
<button type="button" ng-click="toggleCb(true)">All Checked</button>
<button type="button" ng-click="toggleCb(false)">All Unchecked</button>
<div>
<input type="checkbox" ng-model="allCheckbox" ng-click="toggleCb(true)" id="all"/>
<label for="all">All</label>
</div>
<div>Imagine more checkbox options</div>
<div>
<p>Value for checkbox is: {{ allCheckbox }}</p>
</div>
</body>
JS:
angular.module('example', [])
.controller('mainCtrl', function($scope) {
$scope.allCheckbox = true;
$scope.toggleCb = function(value) {
console.log('called with value', value);
$scope.allCheckbox = value;
}
});
因此,这个基本的示例设置有几个按钮,单击这些按钮将更改范围变量的布尔值。这是为了说明输入正在考虑设置范围变量。输入也是单击绑定到同一个函数,当使用1.0.8时,它会保持选中复选框。
有没有人需要通过运行最新版本的角度来执行此操作,如果是这样,您如何克服此问题?