2017-07-06 2 views
0

Ich habe eine Benutzer-Tabelle, jeder Benutzer ist anklickbar, sobald Sie darauf klicken - ein modales Pop-ups mit den Informationen des Benutzers.Hinzufügen von Bedingung zu Data-Bind = "mit"

die div des modalen:

<div class="infoForm" data-bind="with: $root.selectedItem"> 
     <input id="companyName" placeholder="Company Name" data-bind="value: name" /> 
     <div class="cont"> 
     <label for="address">ADDRESS</label> 
     <input class="contField" placeholder="Address 1" id="address" data-bind="value: address1" /> 
     <input class="contField" placeholder="Address 2" id="address2" data-bind="value: address2" /> 
     <input class="contField" id="city" placeholder="City" data-bind="value: city" /> 
     <input class="contField" id="state" placeholder="State" data-bind="value: state" /> 
     <input class="contField" id="zip" placeholder="Zip" data-bind="value: zip" /> 
... 
</div> 

Das Problem ist, dass, wenn selectedItem leer ist, die modalen popups leer, ohne Inhalt.

Ich wollte eine Bedingung für die data-bind hinzufügen nur passieren, wenn $root.selectedItem nicht null becasue ist, wenn ich die data-bind überhaupt nehmen es funktioniert.

Ich habe versucht, dass:

<div class="infoForm" data-bind="with: $root.selectedItem ? $root.selectedItem : ''"> 
    ..... 
</div> 

Aber es funktioniert nicht, es funktioniert einfach nicht passieren, in anderen Arten von Bindung (text, value es funktioniert).

Die selectedItem gesetzt wird, wenn einer der Benutzer auf dem Tisch angeklickt wird:

<td class="name n" data-bind="text: name, click: $root.setSelectedItems.bind($data)"></td> 

The View Modell:

var UsersViewModel = function() { 
    var self = this; 
    self.selectedItem = ko.observable(); 
    ... 

    self.setSelectedItems = function (selectedUser) { 
    if (selectedUser) { 
     self.selectedItem(selectedUser); 
    } 
} 
} 

Jede Idee, wie das erreichen?

+0

Wenn 'selectedItem' gleich' null', die 'infoForm' inneren Elemente sollten nicht gerendert noch dagetenbundenen werden .. Beachten Sie auch, dass Sie, wenn Sie 'if' /' else' Logik in Ihre Daten-binds setzen und Observables verwenden, diese aufrufen müssen: '$ root.selectedItem()?/* ... * /:/* ... */' – user3297291

+0

@ user3297291 Danke, dieses div ist ein Modal, dass Popups auf Knopf klicken, das erste Mal das Modal geöffnet wird, wenn' selectedItem' 'null' ist das modal kommt leer, wenn ich 'data-bind = 'mit: $ root.selectedItem' herausnehme, öffnet es mit dem Inhalt. – user3378165

+0

Sie müssen vielleicht mehr von der DOM/viewmodel Struktur zeigen, damit wir Ihnen helfen können ... Es ist Es lohnt sich, darauf hinzuweisen, dass das eigentliche 'infoForm'-Element * immer * rendert. Die' mit'-Bindung fügt nur ihren inneren Inhalt hinzu oder entfernt sie. Sind Sie sicher, dass Sie 'selectedItem' korrekt setzen/löschen? – user3297291

Antwort

1

Ich löse es durch die selectedItem mit einem leeren user Einstellung:

self.selectedItem = ko.observable(new User("")); 
Verwandte Themen