2017-01-15 7 views
0

Я пытаюсь получить значение кнопки значения радиосвязи из ng-диалога, но оно всегда не определено.ng-dialog: значение входной радио кнопки не определено

Вот диалог шаблона:

<script type="text/ng-template" id="flag-reasons.html"> 
    <div style="padding:10px;"> 
     <span> 
      What's wrong ? 
     </span> 
     <div class="form-group" ng-repeat="flagreason in flagreasons"> 
      <input type="radio" ng-model="fr" name="frname" value="{{flagreason.id}}"> {{flagreason.title}} 
     </div> 
     <div class="form-group"> 
      <button type="button" ng-click="validFlag()"> 
       Valider 
      </button> 
     </div> 
    </div> 
</script> 

Здесь частичные JS, где я начать с диалога:

$scope.openFlag = function(){ 
    $scope.dialog = ngDialog.open({ template: 'flag-reasons.html', 
     className: 'ngdialog-theme-default', scope: $scope }); 
    $scope.validFlag = function(){ 
     console.log($scope.fr); 
    } 
} 

Я пытался нг-значение, как показано ниже:

<input type="radio" ng-model="fr" name="frname" ng-value="flagreason.id"> {{flagreason.title}} 

, но он по-прежнему не определен

Обратите внимание, что это работает, когда я напрямую установить значение кнопки радио, как:

<input type="radio" ng-model="fr" name="frname" value="5"> {{flagreason.title}} 

ответ

1

вопрос с ngmodel, что не получает обновления. Сначала вы должны инициализировать ngmodel в шаблоне.

флаг reasons.html

<script type="text/ng-template" id="flag-reasons.html"> 
    <div style="padding:10px;"> 
     <span> 
      What's wrong ? 
     </span> 
     <div class="form-group" ng-repeat="flagreason in flagreasons"> 
      <input type="radio" ng-model="cb.fr" name="frname" value="{{flagreason.id}}">{{flagreason.id}} - {{flagreason.title}} 
     </div> 
     <div class="form-group"> 
      <button type="button" ng-click="validFlag()"> 
       Valider 
      </button> 
     </div> 
    </div> 
</script> 

Контроллер

angular.module("app", ['ngDialog']) 
    .controller('Ctrl',function ($scope, ngDialog) { 
     'use strict'; 
     $scope.cb = {}; 
     $scope.flagreasons = [ 
      {id: 1, title: 'title1'}, 
      {id: 2, title: 'title2'}, 
      {id: 3, title: 'title3'} 
     ]; 

     $scope.openFlag = function(){ 
      $scope.dialog = ngDialog.open({ template: 'flag-reasons.html', 
       className: 'ngdialog-theme-default', scope: $scope }); 
      $scope.validFlag = function(){ 
       console.log($scope.fr); 
      } 
     } 

     $scope.$watch('cb.fr', function (v) { 
     console.log(v); 
     }); 
    }); 

Рабочая Fiddle: JSFiddle

+0

Я получил эту следующую ошибку с кодом: Error: [$ rootScope: inprog] $ digest уже выполняется –

+0

Oh. Попробуйте указать область действия. $ Примените результат, который вы получите? – digit

+0

еще одна ошибка: TypeError: ngModel. $ SetViewValue не является функцией –