2016-11-15 4 views
1
<tr ng-repeat="school in schools"> 
<td>{{school.Location}}</td> 
<td>{{school.Type}}</td> 
<td>{{school.Name}}</td> 
<td class="school-action text-center"> 
    <label>        
      <input type="radio" name="masdoc-school" class="flat-red" /> 
    </label> 
</td> 
</tr> 

Я уже определил IcheckПолучить Selected Index Использования ICheck Радиокнопки в нг-повторе AngularJS

$('input[type="radio"].flat-red').iCheck({ 
    checkboxClass: 'icheckbox_square-blue', 
    radioClass: 'iradio_square-blue' 
}); 

$ scope.schools является массив объектов, как я могу получить выбранный индекс ввода [имя = «masdoc-school»], чтобы получить значение $ scope.schools [selected index] в контроллере. Спасибо всем!

ответ

1

Проблема решена! Использование icheck директивы (wajatimur) в https://github.com/fronteed/icheck/issues/62

app.directive('icheck', function($timeout, $parse) { 
    return { 
     require: 'ngModel', 
     link: function($scope, element, $attrs, ngModel) { 
      return $timeout(function() { 
       var value; 
       value = $attrs['value']; 

       $scope.$watch($attrs['ngModel'], function(newValue) { 
        $(element).iCheck('update'); 
       }) 

       return $(element).iCheck({ 
        checkboxClass: 'icheckbox_square-blue', 
        radioClass: 'iradio_square-blue' 

       }).on('ifChanged', function(event) { 
        if ($(element).attr('type') === 'checkbox' && $attrs['ngModel']) { 
         $scope.$apply(function() { 
          return ngModel.$setViewValue(event.target.checked); 
         }); 
        } 
        if ($(element).attr('type') === 'radio' && $attrs['ngModel']) { 
         return $scope.$apply(function() { 
          return ngModel.$setViewValue(value); 
         }); 
        } 
       }); 
      }); 
     } 
    }; 
}); 

затем в нг-повтора:

<tbody> 
    <tr ng-repeat="school in schools"> 
     <td>{{school.Location}}</td> 
     <td>{{school.Type}}</td> 
     <td>{{school.Name}}</td> 
     <td class="school-action text-center"> 
      <label> 
       <input icheck type="radio" name="iCheck" class="flat-red" ng-value={{$index}} ng-model="$parent.schoolIndex" ng-change="changeFaculty(schoolIndex)"/> 
      </label> 
     </td> 
    </tr> 

используя $ родителя в нг-модели, поскольку ngRepeat создаст новые области для своих детей (наряду с тем, как прототипное наследование влияет на области), поэтому ng-change будет только срабатывать событие один раз.

 Смежные вопросы

  • Нет связанных вопросов^_^