2015-04-17 3 views
0

У меня есть список значений переключателей в ControllerA, напечатанных в представлении с помощью ng-repeat. Список поступает из службы. Теперь я хочу проверить, какой переключатель выбран в ControllerB.Обновление значения радио в службе angularjs

Как получить текущее выбранное значение?

Нужно ли добавить функцию $ watch в ControllerA и обновить сервис таким образом?

Или существует другой способ привязки переменной от контроллера к переменной в сервисе?

+0

Показать код пожалуйста. –

+0

Использовать ng-model ответил здесь http://stackoverflow.com/questions/23279296/radio-buttons-ng-checked-with-ng-model –

ответ

1

Нет необходимости устанавливать $watch; все дело в совместном использовании состояний между контроллерами.

Javascript

var app = angular.module('app', []); 

app.factory('myState', function() { 

    // For this example I'm just returning the state directly, but it can also 
    // be returned from some function or even some backend api. Just remember 
    // that factories (services/providers) are singletons and will point always 
    // to the same instance within your app. 

    return { 
    chickenEgg: 'egg' 
    }; 

}); 

app.controller('ControllerA', function($scope, myState) { 
    $scope.formData = myState; 
}); 

app.controller('ControllerB', function($scope, myState) { 
    $scope.result = myState; 
}); 

Html

<div ng-controller="ControllerA"> 

    <h2>ControllerA</h2> 

    <form class="form"> 
     <label>Chicken or the Egg?</label> 
     <div class="form-group"> 
     <div class="radio"> 
      <label> 
      <input type="radio" name="chickenEgg" value="chicken" ng-model="formData.chickenEgg">Chicken 
      </label> 
     </div> 
     <div class="radio"> 
      <label> 
      <input type="radio" name="chickenEgg" value="egg" ng-model="formData.chickenEgg">Egg 
      </label> 
     </div> 
     </div> 
    </form> 

    </div> 

    <div ng-controller="ControllerB"> 

    <h2>ControllerB</h2> 
    <pre><code>result = {{ result | json }}</code></pre> 

    </div> 

Вы можете увидеть его в действии в this plunker.

+0

А, я вижу. Служба фактически связана через ng-модель. Nifty, не ожидал, что это поведение просто из '$ scope.formData = myState' и' ng-model = "formData.chickenEgg" ' –

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