Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kuo vienkartinis surišimas skiriasi nuo dvipusio surišimo mvvmcross


Kuo vienkartinis surišimas skiriasi nuo dvipusio surišimo mvvmcross


MVVMCROSS, vienkartinis įrišimas ir dvipusis įrišimas yra skirtingi tikslai, valdant vaizdo ir rodinio modelio sąveiką.

Vienkartinis įrišimas

Vienkartinis įrišimas naudojamas duomenims perduoti iš „ViewModel“ į rodinį tik vieną kartą, kai nustatomas įrišimo šaltinis. Po šio pradinio perkėlimo įrišimas nestebi „ViewModel“ savybių pakeitimų ir neatnaujina rodinio, nebent pats įrišimo šaltinis yra atstatytas. Šis režimas yra naudingas laukams, kurie yra konfigūruojami, tačiau po nustatymo po to, kai buvo nustatytas, dažnai nesikeičia. Pvz., „MVVMCross“ metu vienkartinis įrišimas naudojamas statiniam tekstui nustatyti iš kalbos failų, nes vartotojas paprastai pasirenka kalbą vieną kartą ir retai jį keičia vėliau [1] [10].

dvipusis įrišimas

Kita vertus, dvipusis įrišimas užmezga nuolatinį, dvikryptį ryšį tarp vaizdo ir vaizdo modelio. „View“ arba „ViewModel“ atnaujinimų pakeitimai. Šis režimas yra ypač naudingas redaguojant esamus duomenis, pavyzdžiui, užpildyti formas, kai vartotojo įvestis ir bet kokie pakeitimai iš „ViewModel“ turi būti atspindėti realiuoju laiku. Dviejų krypčių surišimas dažniausiai naudojamas MVVMCross ir dažnai tarnauja kaip numatytasis naujų surišimų režimas [1] [2].

Pagrindiniai skirtumai

-Duomenų srauto kryptis: Vienkartinis įrišimas atnaujina tik „ViewModel“ rodinį tik vieną kartą, o dvipusis įrišimas nuolat atnaujina „View“ ir „ViewModel“.
-Pakeitimų stebėjimas: Vienkartinis įrišimas nestebi pakeitimų po pirminio atnaujinimo, tuo tarpu dvipusis įrišimas nuolat stebi ir atnaujina abu galus.
-Naudojimo atvejai: Vienkartinis laikas yra idealus statiniams ar retai keičiantiems duomenims, tuo tarpu dvipusė yra geriau tinkama interaktyvioms formoms ar dinaminiams duomenų mainams.

Apibendrinant galima pasakyti, kad vienkartinis įrišimas naudojamas statiniam ar pradiniam duomenų sąrankai, o interaktyviems scenarijams naudojamas dvipusis įrišimas, kai tiek „View“, tiek „ViewModel“ turi atspindėti vienas kito pokyčius realiuoju laiku.

Citatos:
[1] https://www.mvvmcross.com/documentation/fundamentals/data-dinding
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-inding-arget.html
[3] https://www.mvvmcross.com/documentation/advanced/custom-data-Briding
[4] https://softwareEngineering.stackexchange.com/questions/322450/how-does-two-way-data-difing-differ-from-simple-auto-sync
[5] https://stackoverflow.com/questions/17156368/
[6] https://yanxiaodi.gitbook.io/xamarin-mvvmcross-handbook/using-mvvmcross-to-create-your-first-xamarin-app/create-the-android-project/undericle-the-data-binding-syntax
[7] https://stackoverflow.com/questions/13504906/what-is-Two-way-Binding
[8] https://github.com/mvvmcross/mvvmcross/issues/29
[9] https://stackoverflow.com/questions/27803448/data-dinding-one-vs-two-way
[10] https://stackoverflow.com/questions/48910503/binding-mode-onetime-in-mvxRecyclerview
[11] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-inding/binding-mode?view=net-maui-9.0
[12] https://www.reddit.com/r/javascript/comments/v993r4/askjs_why_is_oneway_binding_better_than_twoway/