AngularJS - 取消选中单选按钮
AngularJS - uncheck radio button
以下 JSFiddle 允许我删除select 单选按钮selection。
http://jsfiddle.net/8s4m2e5e/132/
我正在使用 AngularJS 1.4,并且在此处的一篇帖子中,我读到上面的 JSFiddle 不适用于 angular 1.3+ 版本。没错,我在上面fiddle中实现代码的时候是不行的。如何让此功能与我的版本一起使用?
以下是我的代码。
foreach (var part in Model.ChildParts)
{
<div class="radio col-md-12">
<input type="radio"
id="@Model.FieldName"
name="@Model.FieldName"
ng-model="gPA(@Model.Id).value"
value="@((part as BaseInputPartVM).GetStringValue())"
ng-click="uncheck($event, @Model.Id)" />
</div>
}
在我的控制器中,
$scope.uncheck = function (event, partId) {
if ($scope.gPA(partId).value == event.target.value)
$scope.gPA(partId).value = false
}
此代码适用于取消selecting(取消选中)单选按钮selection。但是,基本单选按钮 selection 不起作用,我无法 select 任何无线电,因为上面的 if 条件总是变为真。
有没有一种方法可以检查以前 selected 的无线电值和新的 selected 值?为了使上述功能正常工作,我需要访问以前和新的无线电 selected 值进行比较。我查看了 ng-model、ng-change,它们都获取了当前的无线电 selected 值,但我还需要知道之前的 selected 值。
好的。我想我得到了我的问题的答案......对于输入收音机,我添加了 ng-mouseup 事件以在单击之前捕获收音机选择的先前值。此外,我在页面上添加了一个隐藏变量来存储之前的单选按钮选择值。然后在 ng-click 事件中,我将检查先前选择的值与当前选择的值。如果以前和当前值相同,我会将值设置为 null 或 false,以取消选中。
foreach (var part in Model.ChildParts)
{
<div class="radio col-md-12">
<input type="radio"
id="@Model.FieldName"
name="@Model.FieldName"
ng-model="gPA(@Model.Id).value"
value="@((part as BaseInputPartVM).GetStringValue())"
ng-mouseup = "setPreviousSelectedValue(@Model.Id)"
ng-click="uncheck($event, @Model.Id)" />
</div>
}
<input type="hidden" id="previousRadioSelection" name="previousRadioSelection" ng-model="previousRadioSelection" value="" />
在控制器中,
//set previous selected value of radio button
$scope.setPreviousSelectedValue = function (partId) {
$scope.previousRadioSelection = $scope.gPA(partId).value;
}
//uncheck radio button
$scope.uncheck = function (event, partId) {
if ($scope.previousRadioSelection == event.target.value)
$scope.gPA(partId).value = null;
}
以下 JSFiddle 允许我删除select 单选按钮selection。
http://jsfiddle.net/8s4m2e5e/132/
我正在使用 AngularJS 1.4,并且在此处的一篇帖子中,我读到上面的 JSFiddle 不适用于 angular 1.3+ 版本。没错,我在上面fiddle中实现代码的时候是不行的。如何让此功能与我的版本一起使用?
以下是我的代码。
foreach (var part in Model.ChildParts)
{
<div class="radio col-md-12">
<input type="radio"
id="@Model.FieldName"
name="@Model.FieldName"
ng-model="gPA(@Model.Id).value"
value="@((part as BaseInputPartVM).GetStringValue())"
ng-click="uncheck($event, @Model.Id)" />
</div>
}
在我的控制器中,
$scope.uncheck = function (event, partId) {
if ($scope.gPA(partId).value == event.target.value)
$scope.gPA(partId).value = false
}
此代码适用于取消selecting(取消选中)单选按钮selection。但是,基本单选按钮 selection 不起作用,我无法 select 任何无线电,因为上面的 if 条件总是变为真。
有没有一种方法可以检查以前 selected 的无线电值和新的 selected 值?为了使上述功能正常工作,我需要访问以前和新的无线电 selected 值进行比较。我查看了 ng-model、ng-change,它们都获取了当前的无线电 selected 值,但我还需要知道之前的 selected 值。
好的。我想我得到了我的问题的答案......对于输入收音机,我添加了 ng-mouseup 事件以在单击之前捕获收音机选择的先前值。此外,我在页面上添加了一个隐藏变量来存储之前的单选按钮选择值。然后在 ng-click 事件中,我将检查先前选择的值与当前选择的值。如果以前和当前值相同,我会将值设置为 null 或 false,以取消选中。
foreach (var part in Model.ChildParts)
{
<div class="radio col-md-12">
<input type="radio"
id="@Model.FieldName"
name="@Model.FieldName"
ng-model="gPA(@Model.Id).value"
value="@((part as BaseInputPartVM).GetStringValue())"
ng-mouseup = "setPreviousSelectedValue(@Model.Id)"
ng-click="uncheck($event, @Model.Id)" />
</div>
}
<input type="hidden" id="previousRadioSelection" name="previousRadioSelection" ng-model="previousRadioSelection" value="" />
在控制器中,
//set previous selected value of radio button
$scope.setPreviousSelectedValue = function (partId) {
$scope.previousRadioSelection = $scope.gPA(partId).value;
}
//uncheck radio button
$scope.uncheck = function (event, partId) {
if ($scope.previousRadioSelection == event.target.value)
$scope.gPA(partId).value = null;
}