2016-09-19 3 views
0

Ich habe eine Mehrfachauswahl:Wie kann ich den Wert der Mehrfachauswahl ändern programmatisch Winkel

<select id="statuses-multi" ng-multiselect multiple="" ng-model="search.lastStatuses" 
             ng-options="status for status in ctrl.statuses track by status"> 
</select> 

und die Richtlinie ng-Multiselect:

app.directive('ngMultiselect', function() { 
return { 
    restrict: 'A', 
    require: 'ngModel', 
    scope: false, 
    link: function(scope, element, attrs, ctrl) { 
     scope.$watch(attrs.ngModel, function(newValue) { 
      scope.$evalAsync(function() { 
       $(element).dropdown(); 
      }); 
     }); 

    } 
} 
}); 

Alles funktioniert gut, solange ein Benutzer alles wählt durch Hand. Allerdings müssen einige Werte bereits vorausgewählt sein.
Ich habe versucht, einfach search.lastStatuses.push(some_value) zu verwenden - funktioniert nicht. Es zeigt nur, dass es dieses some_value-Objekt hat, zeigt das aber nicht an. Außerdem, nach der ersten Auswahl des Benutzers wird es gelöscht.

+0

Was ist $ (..). Dropdown()? Welche Bibliothek ist das? Sie sollten einen Plunkr machen, um schnell Hilfe zu bekommen. Jetzt machen Sie es uns schwer, das Problem zu reproduzieren und unsere Antworten zu testen, da wir keine Ahnung haben, was .dropdown() ist. –

Antwort

-1

Wenn Sie ng-options verwenden, verfügt das Modell über ein Array von vollständigen Objekten. Wenn Sie versuchen, nur Werte in das Modell-Array zu schreiben, funktioniert es nicht. Versuchen Sie, über die Liste ctrl.statuses zu iterieren und schieben Sie das komplette Objekt in search.lastStatus, das Sie vorausgewählt haben möchten.

Hoffe, dass hilft. Fröhliche Programmierung!

+0

Überprüfen Sie: http://www.bennadel.com/blog/2566-scope-watch-vs-watchcollection-in-angularjs.htm und https://docs.angularjs.org/api/ng/type/$rootScope. Umfang –

0

Wenn ein Array beobachten, sollten Sie

verwenden
scope.$watchCollection(attrs.ngModel, function(newValue) { /*...*/ }); 

statt nur einem $ Uhr, um die Ansicht zu aktualisieren, wenn Elemente des bekommen geschoben in der Anordnung.

Verwandte Themen