这个问题在这里已有答案:
我正在尝试使用ng-repeat指令和逐个表达式来显示单选按钮,当我提交值附加到模型中时,当我使用模型中的值重新打开页面时,单选按钮不显示已选中。
我用平面字符串模型+字符串值实现了相同的功能。但这次我正在尝试使用物体。
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script>
<div ng-app="app" ng-controller="MyCtrl">
<form name="myForm">
<p>New TRY</p>
<ul>
<li ng-repeat="i in peopleNew.person">
<label>
{{i}}
<input type="radio" ng-model="peopleServer.person"
name="same" ng-value="i" />
</label>
</li>
</ul>
</form>
<div>
JS代码
angular.module('app', [])
.controller('MyCtrl', ($scope) => {
$scope.peopleNew ={
person: {
"name": "Ringo",
"id": "R",
"subj": "Sci"
}
}
$scope.peopleServer= {
person: {"name":"Ringo"}
}
});
如上所述,我应该在屏幕上有4个单选按钮,我可以选择1并提交。然后,当我再次在我的模型中打开它时,该人具有正确的值,通过ng-value
保存但仍然在UI上我没有看到单选按钮检查名称Ringo应该被检查。型号有:
$scope.peopleServer= {
person: {name:"Ringo"}
}
试过的解决方案
当您重新加载或者您已经拥有模型中的值时,有人会帮助您了解如何选择单选按钮
angular.module('app', [])
.controller('MyCtrl', ($scope) => {
$scope.peopleNew ={
person: {
"name": "Ringo",
"id": "R",
"subj": "Sci"
}
}
//uncomment for testing.
$scope.peopleServer= {
person: {"name":"Ringo"}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script>
<div ng-app="app" ng-controller="MyCtrl">
<form name="myForm">
<p>New TRY</p>
<ul>
<li ng-repeat="i in peopleNew.person">
<label>
{{i}}
<input type="radio" ng-model="peopleServer.person"
name="same" ng-value="i" />
</label>
</li>
</ul>
</form>
<div>
自动?我上面的所有尝试都没有用,我错过了什么。
您有一些语法错误,缺少模型值和一些不必要的标记。首先,你可以完全摆脱ng-checked
。如果正确设置ng-model
和ng-value
,将自动处理。由于您的对象是独特的,因此不需要track by
。
使用AngularJS指令(例如ng-value
)时,您不需要使用大括号来引用模型值。所以ng-value="{{person}}"
成为ng-value="person"
。
你指的是myObj.person
,但似乎没有相应的模型值。下面是您提供的代码和标记的编辑,显示它确实可以使用对象作为单选按钮的值。
angular.module('app', [])
.controller('MyCtrl', ($scope) => {
$scope.people = [{
name: "John",
id: "J"
}, {
name: "Paul",
id: "P"
}, {
name: "George",
id: "G"
}, {
name: "Ringo",
id: "R"
}];
$scope.myObj = {
person: $scope.people[1]
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.2/angular.min.js"></script>
<div ng-app="app" ng-controller="MyCtrl">
<form name="myForm">
<p>Decisions</p>
<ul>
<li ng-repeat="person in people">
<label>
{{ person.name }}
<input type="radio" ng-model="myObj.person"
name="sameName" ng-value="person" />
</label>
</li>
</ul>
</form>
<div>
{{ myObj.person }}
</div>
</div>