我有一个表单,里面有不同的输入标签和标签:
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将所选值发送到服务器。
答案 0 :(得分:1)
使用共享服务并将其注入任何控制器:
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方法在服务器上发送此值。
答案 1 :(得分:0)
ng-repeat
为每个项目创建自己的范围,因此您可能无法访问它。尝试将模型放在父范围内的对象中。ng-value
接受表达式,但不接受{{expression}}
。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'];
}