如何在控制器内获取ng重复单选按钮值



我有一个表单,里面有不同的输入标签和标签:

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将选定的值发送到服务器。

  1. 单击单选按钮
  2. 执行类似var-checked=$scope.radiobutton的操作
  3. array.prush(选中)
  4. 发送到服务器

使用共享服务并将其注入任何控制器:

    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. ng-repeat为每个项创建自己的作用域,因此访问它可能会遇到问题。请尝试将模型放在父作用域中的对象中
  2. 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'];
}

最新更新