2012-11-02 16 views
6

proszę, czy ktoś może mi pomóc z tym małym bałaganem wiążącym. Próbuję wygenerować listę zadańaktualizacja modelu dla dynamicznie generowanych przycisków radiowych

tutaj jest definicja modelu w moim TaskController:

angular.module('yeomantestApp') 
    .controller 'TaskController', ($scope) -> 
    $scope.currentTask 
    $scope.tasks = [ 
     { 
      id: 1 
      name: 'write test' 
      elapsedTime: 15 
     }, 
     { 
      id: 2 
      name: 'run test' 
      elapsedTime: 32 
     }, 
     { 
      id: 3 
      name: 'write code' 
      elapsedTime: 22 
     } 
    ] 

Więc teraz chcę renderować model z poniższej widzenia. Widok iteruje nad tablicą zadań i tworzy listę przycisków opcji dla każdego zadania. Mój problem polega na tym, że model wiążący się z currentTask nie działa. Po wybraniu dowolnego zadania wpis modelu currentTask nie jest aktualizowany. Ale według tutoriali i dokumentacji powinna.

<div class="hero-unit" ng-controller="TaskController"> 
    <h1>Tasks</h1> 
    <h2>current {{currentTask}}</h2> 
    <form name="taskForm"> 
     <div ng-repeat="task in tasks"> 
      <input type="radio" name="taskGroup" ng-model="currentTask" value="{{task.id}}">{{task.name}} {{task.elapsedTime}} 
     </div> 
    </form> 
</div> 

Odpowiedz

12

Zmiana atrybutu ng-model do ng-model="$parent.currentTask" powinno rozwiązać problem.

Oto jsFiddle: http://jsfiddle.net/dp3xq/8/

+0

jesteś moim bohaterem !!!! Powinienem był od razu używać funkcji debugowania zasięgu THX dużo –

+1

Albo jeszcze lepiej http://blog.angularjs.org/2012/07/introducing-angularjs-batarang.html, aby wyśledzić zagadnienia związane z zasięgiem :-) –

+1

Zobacz także http://stackoverflow.com/questions/12744788/angularjs-table-sort-with-ng-repeat, gdzie przedstawiono dwa inne rozwiązania "zagnieżdżonego zakresu": 1) użyj metody kontrolera, aby zmodyfikować currentTask 2) make currentTask typ nieprymitywny, dzięki czemu zasięgi ng-powtórzeń otrzymują odniesienie do niego (zamiast kopii lokalnej). –

Powiązane problemy