Cum de a crește evenimentele DOM atunci când lucrați cu KnockoutJS

Să presupunem că am un markup html simplu:

<div>
    <input type="text"/>
</div>

când fac clic pe div, aș dori să mă concentrez pe intrare. Ce moduri de a face acest lucru am?

Mă gândeam la mai multe posibilități, dar nu m-am uitat bine:

  • uitați de knockout și folosiți jQuery bun vechi. Dar atunci codul se transformă în spaghete și comportamentul UI este răspândit în multe locuri.
  • creează linkHandler personalizat pentru intrare și adaugă clic pe legare la div, făcând clic pe modificări pe o anumită proprietate model, legarea personalizată reacționează asupra acesteia și ridică evenimentul de focalizare. Dar acest lucru pare prea complicat pentru un lucru atât de ușor (cel puțin în jq era ușor).

Există și alte opțiuni?

0
În opinia mea umilă, Codul Spaghetti este rezultatul unei practici de programare proaste și nu datorită alegerii bibliotecii. Puteți scrie Spaghetti-Cod în knock-out, jQuery sau JS simplu dacă nu știe ce fac. Pe de altă parte, puteți scrie și un cod sau un cod Ravioli cu unul sau două. Este mai mult pentru dezvoltator decât pentru biblioteca pe care o alegeți.
adăugat autor Nope, sursa

1 răspunsuri

Knockout-ul este excelent pentru construirea unui interfață utilizator cu un model de suport. Acest lucru nu vă ajută atunci când trebuie să faceți manipularea DOM la nivel scăzut (cum descrieți). De fapt, pe pagina introductivă pentru knockout, autorul afirmă:

Toată lumea iubește jQuery! Este un înlocuitor remarcabil pentru motocicleta,   inconsistent DOM API pe care trebuia să-l facem în trecut. jQuery este un   excelent mod de joasă nivel pentru a manipula elementele și manipulatorii de evenimente într-o   pagină web. Cu siguranță folosesc încă jQuery pentru manipularea DOM la nivel scăzut.   KO rezolvă o altă problemă.

(accentul meu)

Personal aș fi de părere că este bine să folosiți jQuery pentru acest tip de manipulare. Dacă rupeți manipulatorii de evenimente și codul MVVM în fișiere JavaScript separate, puteți evita scrierea codului de spaghete.

0
adăugat
Poate că aveți dreptate, m-am gândit că poate există un al treilea mod de "knock-out" de a face manipulări la nivel inferior DOM, și tocmai nu l-am văzut. Se pare că nu există și mai bine mergem cu jQuery
adăugat autor Andrej Slivko, sursa
@AndrejSlivko: Am lucrat la mai multe proiecte atât cu knockout cât și cu jQuery și atâta timp cât vă întrebați dacă o interacțiune este manipulare DOM mai pură sau ar trebui să fie condusă de ViewModel, veți fi bine.
adăugat autor Andrew Whitaker, sursa