2017-10-04 1 views
0

Ich habe mein Produkt von Angular 1.2.x auf 1.4.x aktualisiert.Mehrfache Auswahl mit Spur durch unterschiedliches Verhalten im Winkel zu 1.4.x

Nach Aktualisierung der angularjs auf 1.4.x; hier i Problem bin vor

Was ich habe: Ich habe Schnipsel mit Winkel 1.2.0 hinzugefügt und hier ist JSFIDDLE mit 1.4.8 mit gleichem Code.

Erklärung:

Wählen Sie einen beliebigen Benutzer von Multi-Select-Box, es zu aktivieren. Wählen Sie den zweiten Benutzer (mit Strg-Taste).

Observation: 1.2.x: erster ausgewählter Wert ist immer noch aktiv (wahr) 1.4.x: Nach dem zweiten Wert erster Wert Aktivflag Auswählen erhält zurückgesetzt.

Warum das passiert? Was soll ich tun, um die vorhandene (1.2.x) Ausgabe in 1.4.x zu bekommen

Hinweis: Mein Englisch schreiben ist nicht so gut. Bitte vermeiden Sie den grammatischen Fehler oder korrigieren Sie es :)

Vielen Dank!

var app = angular.module('test',[]); 
 
app.controller('selectIssue',function($scope){ 
 
\t $scope.users = [{ 
 
    \t name:"Rohit", 
 
    active:false 
 
    }, 
 
    { 
 
    \t name:"Virat", 
 
    active:false 
 
    }, 
 
    { 
 
    \t name:"Viky", 
 
    active:false 
 
    }]; 
 
    $scope.selectedName = []; 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script> 
 
<div ng-app="test"> 
 
    <div ng-controller="selectIssue"> 
 
    <div> 
 
    <select multiple ng-model="selectedName" ng-options="user.name for user in users track by user.name"></select> 
 
    </div> 
 
    Selected value table : 
 
    <div> 
 
     <table border="1"> 
 
     <tr> 
 
      <td>Name</td> 
 
      <td>isActive</td> 
 
      <td>Output</td> 
 
     </tr> 
 
     <tr ng-repeat="n in selectedName"> 
 
      <td>{{n.name}}</td> 
 
      <td><input type="checkbox" ng-model="n.active"></td> 
 
      <td>{{n}}</td> 
 
     </tr> 
 
     </table> 
 
    </div> 
 
    </div> 
 
</div>

+0

"Was soll ich tun, um die bestehenden (2.1.x) Ausgabe in 2.4.x zu bekommen" Warte, wir 1.X aka AngularJS oder 2.X aka Angular Einnahme oder Angular 2? – DanteTheSmith

+0

Sie müssen der Auswahl eine ng-Änderung zuweisen und diese dann verwenden, um die Werte in das Modell zu übertragen. Siehe diesen SO-Beitrag: https://stackoverflow.com/questions/13473096/angularjs-select-multiple-options-from-object – rrd

+0

@DanteTheSmith aktualisierte die Frage. Vielen Dank! – Sachink

Antwort

0

Sie sind nicht aktualisiert scope.names $, wenn Sie das Kontrollkästchen ändern, aber scope.selectedNames $. Was bedeutet, dass Sie ng-change auf der Checkbox verwenden müssen, um auch $ scope.names zu aktualisieren.

$scope.updateName = function(name) { 
    angular.forEach($scope.names, function(n) { 
     if (n.name === name.name) { 
      n.active = name.active 
     } 
    }) 
} 

Dies ist ein fiddle aktualisiert

+1

Dies ist wahr. Aber warum es in 1.2 funktionierte funktioniert immer noch verwirrt :) – DanteTheSmith

+0

Warum sollte Ich aktualisiere meine ng-Optionen? Ich aktualisiere das ng-Modell (ausgewählte Werte), es ist kein Problem, wenn ich den aktiven Benutzer aus der Liste entferne und nach dem Hinzufügen noch einmal nicht aktiv ist. Ich habe Bedenken über den Benutzer ist in der Liste haben sie nicht zu berühren und nach dem Hinzufügen eines anderen in der Liste; die bestehenden Benutzer werden zurückgesetzt – Sachink

+0

@DanteTheSmith gleiche Verwirrung hier? – Sachink

Verwandte Themen