[英]Radio button value not selected after changing in controller
更新控制器中的值后,單選按鈕出現問題。 它具有Y / N值,當我加載信息時,默認情況下顯示為“ N”,但顯示為N,但是如果我更改為YES,我將進行一些驗證,並且必須將其更改回NO(我為該值賦了值)在控制器中),但未選中html,實際上它們都不是
<div ng-app="app" ng-controller="MainCtrl">
<label class="radio-inline">
<input type="radio" name="radioAceptada" ng-model="accepted" value="Y" ng-change="changeValue()">Yes
</label>
<label class="radio-inline">
<input type="radio" name="radioAceptada" ng-model="accepted" value="N" ng-change="changeValue()">No
</label>
</div>
我不確定這是否是正確的解釋,但我認為值的更新速度如此之快,以至於沒有時間更新UI。 我遇到了類似的問題,並通過添加0.5秒的延遲解決了該問題。
$scope.changeValue = function() {
if ($scope.accepted === 'Y') {
alert("Error");
$timeout(function() {
$scope.accepted = 'N';
}, 500);
}
};
工作柱塞
您必須在視圖中使用ng-value
並為其分配返回函數。
<!DOCTYPE html>
<html>
<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.2.x" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.min.js" data-semver="1.2.17"></script>
<script src="script.js"></script>
</head>
<body>
<div ng-app="app" ng-controller="MainCtrl">
<label class="radio-inline">
<input type="radio" name="radioAceptada0" ng-model="accepted" ng-value='change()' >Yes
</label>
<label class="radio-inline">
<input type="radio" name="radioAceptada1" ng-model="accepted" value='N 'ng-value="N" >No
</label>
</div>
</body>
</html>
您的控制器:
var app = angular.module('app', []);
app.controller('MainCtrl', function($scope) {
$scope.accepted = 'N';
$scope.change=function(){
if(validation is apply )
retrun 'Y';
else
{
alert("somting you want show");
return 'N';
}
alert("x")
return 'Y';
}
});
很抱歉,我想念您的問題。 這是代碼,即使選中Y復選框,也要選擇N,
<input type="radio" name="rdly" ng-model="mdly" value="Y" ng-change="changeValue(mdly)">Yes
<input type="radio" name="rdln" ng-model="mdln" value="N" ng-change="changeValue(mdln)">No
您必須指定其他名稱才能工作。
$scope.mdln = 'N';
$scope.changeValue = function() {
if ($scope.mdly === 'Y') {
alert('Change back to N');
$scope.mdly = '';
$scope.mdln = 'N';
}
};
我對JSfiddle進行了更改: 在這里
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.