2016-04-26 8 views
0

Ich gab mir einen ui-select plunkr und passte ihn meiner eigenen Situation an. Das ng-Modell wird nicht aktualisiert, aber durch Klicken auf die Schaltfläche zum Aktualisieren des Modells wird ui-select aktualisiert.In diesem Plunkr, warum aktualisiert das ng-Modell nicht?

Vielen Dank im Voraus!

<h3>Select2 theme</h3> 
    <p>Selected: {{id}}</p> 
    <ui-select ng-model="id" theme="select2" style="min-width: 300px;"> 
    <ui-select-match placeholder="Select a person in the list or search his name/age...">{{$select.selected.email}}</ui-select-match> 
    <ui-select-choices repeat="person.id as person in people.devs | propsFilter: {email: $select.search, id: $select.search}"> 
     <div ng-bind-html="person.id | highlight: $select.search"></div> 
     <small> 
     <span ng-bind-html="''+person.id | highlight: $select.search"></span> 
     {{person.email}} 
     </small> 
    </ui-select-choices> 
    </ui-select> 

    <br> 
    <br> 
    <br> 
    <button class="btn btn-primary"ng-click="id = 2">Change Model</button> 
    <span>(id = 2) </span> 

http://plnkr.co/edit/3vEXkkNLvuNhpO1hKpmj?p=previewenter link description here

+1

weil Sie es immer auf 2 in 'ng-click' setzen? – smnbbrv

Antwort

2

Problem der Anwendungsbereich:

<ui-select ng-model="$parent.id" ....> 

Um Variable in Ihrem Controller dieses Problem nie Verwendung Punktnotation zu haben und initialisieren: Vermittler Felder Bedeutung.

// controller 
$scope.context = {id:-1}; 
// html 
    <ui-select ng-model="context.id" 

Dieses sehr oft passieren, ng-if wird das gleiche Problem verursachen. Dies ist ein Limit für die Vererbung von Javascript. Angular kann nichts dagegen tun.

+0

Wie hast du es herausgefunden? :) –

+0

Mein Plunker wurde aktualisiert, um Punktnotation (test.id) zu verwenden. Es funktioniert nach dem Klicken auf die Schaltfläche zunächst, aber wenn ich die Combobox ändern zunächst scheint es zu brechen? http://plenkr.co/edit/3vEXkkNLvuNhpO1hKpmj?p=preview –

+0

Da es einige Probleme mit dem Auffrischen von Modellen gibt, ist es ein häufiges Problem, also suche ich immer nach dem $ parent-Trick, wenn ich das sehe. Für Ihren Plunkr vergessen Sie den Controller-Teil: '$ scope.test = {};' Wenn Sie es nicht in Ihrem $ scope-Controller initialisieren, kann es in einem untergeordneten Bereich enden, den ein Teil Ihrer Vorlage nicht enthält sehen. – Walfrat

Verwandte Themen