2016-06-17 4 views
0

In meinem Knockout app Ich versuche setFocus wie dieseSetFocus funktioniert nicht

<div class="row" data-bind="visible: $root.inOwnerShipChangingMode"> 
     <div class="medium-12 columns"> 
      <input type="text" placeholder="Enter user name to give ownership (trans)" data-bind="autoComplete: { selected: $root.newOwnerForLocationId, options: observableArrayOfUsersWhoCanBecomeOwners}, hasFocus: true" /> 
     </div> 
</div> 

zu benutzen Es funktioniert nicht. Das Element, wie Sie versteckte sehen kann, ist abhängig von $ root.inOwnerShipChangingMode. Ich habe versucht, es aus der sichtbaren Bindung zu entfernen, funktioniert immer noch nicht.

Meine Knockout-Version ist 3.3.0.

+0

Ich weiß nicht, was Sie erreichen wollen. Sie möchten den Fokus auf die Eingabe legen, und es funktioniert nicht? Oder der Inhalt ist nicht einmal sichtbar? So können wir dir nicht helfen. – Martin

+1

[hasFocus nicht Fokus gesetzt, wenn Element nicht sichtbar] (https://github.com/knockout/knockout/issues/355) –

Antwort

0

Haben Sie versucht, zu einem beobachtbaren Wert verbindlich - oder auch nur eine Funktion, die true zurückgibt? hasFocus ist ein Zwei-Wege-Bindung es so könnte nicht mit etwas arbeiten, die nicht in beiden Richtungen funktioniert.

Wenn das gebundene Element < input/> zum Zeitpunkt des Bindens nicht sichtbar ist, verweigert der Browser wahrscheinlich den Fokus. Wenn Sie später das übergeordnete Element <div> für sichtbar setzen, wird < input/> nicht den Fokus gegeben, da gibt es keinen Grund für neu gebunden werden - es hat immer noch die gleichen Werte/Eigenschaften/Attribute wie wenn es war geladen und nichts hat sich in dieser Hinsicht verändert.

So würde ich vorschlagen, eine beobachtbare zu hasFocus zuweisen, auch wenn der Wert dieser ändert sich nie.

Verwandte Themen