我有一个表单,里面有不同的输入标签和标签:
form action="">
<div class="fields" data-ng-repeat="option in question.body.options">
<input id="{{option.text}}" type="radio" name="gender" ng-model="demographic_value" ng-value="{{option.text}}">
<label for="{{option.text}}">{{option.text}}</label>
</div>
</form>
我想访问所选单选按钮的值,数据是如何绑定的?有没有标准的方法,或者"isChecked"值之类的东西?
编辑:好的,更清楚地说:我只想有一个选项,它是选定的。在控制器内部,而不是在视图中。
因此,我可以通过HTTP将选定的值发送到服务器。
- 单击单选按钮
- 执行类似var-checked=$scope.radiobutton的操作
- array.prush(选中)
- 发送到服务器
使用共享服务并将其注入任何控制器:
angular.module("yourAppName", []).factory("mySharedService", function(){
var mySharedService = {};
mySharedService.values = {};
mySharedService.setValues = function(params){
mySharedService.values = params;
}
return mySharedService;
});
并且在将其注入任何控制器之后。例如:
function MainCtrl($scope, myService) {
$scope.radioButtons= myService.values;
}
function AdditionalCtrl($scope, myService) {
$scope.var= myService.values;
}
编辑:对于已检查/未检查的值:
你可以使用观察者:
$scope.$watch('question.body.options', function (changedOptions) {
//some actions with changed options
}, true);
更新:关于您的更新:
1) 您应该创建观察程序,如上面所述。
2) 在观察程序中,当值发生变化时,您可以用您的值初始化必要的服务属性(调用setValue函数)
3) 您应该将sharedService注入另一个控制器,并可以从该服务中获取这些值。
4) 调用$http或$resource方法在服务器上发送此值。
ng-repeat
为每个项创建自己的作用域,因此访问它可能会遇到问题。请尝试将模型放在父作用域中的对象中- CCD_ 2接受表达式,但与CCD_ 3不同
http://jsfiddle.net/g8qLY/
HTML:
<form ng-app ng-controller="ctrl" name="inputform">
<label for="{{option}}" ng-repeat="option in options">
{{option}}
<input id="{{option}}" type="radio" name="gender"
ng-model="inputform.radioinput" ng-value="option">
</label>
<div ng-bind-template="Radio Input: {{inputform.radioinput}}"/>
</form>
JS:
function ctrl($scope) {
$scope.options = ['Option1', 'Option2', 'Option3'];
}