2012-11-02 15 views
6

bitte kann mir jemand helfen mit dieser kleinen verbindung chaotisch. Ich versuche, eine Liste von Aufgabenmodell update für dynamisch generierte radiobuttons

hier zu erzeugen, ist die Bestimmung des Modells in meinem 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 
     } 
    ] 

So, jetzt habe ich das Modell mit den folgenden Modus machen möchten. Die Ansicht iteriert über das Task-Array und erstellt eine Liste mit Optionsfeldern für jede Task. Mein Problem ist, dass das Modell, das an currentTask bindet, irgendwie nicht funktioniert. Wenn ich eine Aufgabe auswähle, wird der currentTask-Modelleintrag nicht aktualisiert. Aber nach den Tutorials und der Dokumentation sollte es.

<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> 

Antwort

12

ändern ng-model Attribut ng-model="$parent.currentTask" sollte Ihr Problem lösen.

Hier ist die jsFiddle: http://jsfiddle.net/dp3xq/8/

+0

Sie mein Held sind !!!! Ich hätte die Scope Debugging-Funktion sofort THX viel –

+1

Oder besser noch http://blog.angularjs.org/2012/07/introducing-angularjs-batarang.html verwendet werden sollte, um Umfang-bezogene Fragen zu finden :-) –

+1

Siehe auch http://stackoverflow.com/questions/12744788/angularjs-table-sort-with-ng-repeat, wo zwei weitere "verschachtelte Scope" -Lösungen vorgestellt werden: 1) benutze eine Controller-Methode, um currentTask zu modifizieren 2) mach currentTask ein nicht-primitiver Typ, sodass die ng-repeat-Bereiche einen Verweis darauf erhalten (anstelle einer lokalen Kopie). –

Verwandte Themen