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


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


„MVVMCross“ vienkartiniame surišime ir vienpusėje įrišime yra du skirtingai duomenų įrišimo režimai, kurie tarnauja skirtingiems tikslams.

Vienkartinis įrišimas

Vienkartinis įrišimas perduoda duomenis iš „ViewModel“ į rodinį tik vieną kartą, kai iš pradžių nustatomas įrišimo šaltinis. Po šio pradinio perkėlimo įrišimas nežiūri į „ViewModel“ pakeitimus ir neatnaujina rodinio, nebent pats įrišimo šaltinis yra atstatytas. Šis režimas yra naudingas laukams, kurie yra konfigūruojami, tačiau po jų nustatymo dažnai nesikeičia. Pvz., „MVVMCross“ metu vienkartinis įrišimas naudojamas statiniam tekstui nustatyti iš kalbos failų, nes vartotojams įprasta vieną kartą pasirinkti kalbą ir dažnai ją pakeisti dažnai [1].

įrišimas į vieną pusę

Kita vertus, vienpusis įrišimas nuolat atnaujina rodinį, kai keičiasi atitinkama „ViewModel“ savybė. Tai reiškia, kad bet kokie „ViewModel“ nuosavybės pakeitimai automatiškai atsispindės rodinyje. Tačiau pakeitimai, padarytos tiesiogiai į vaizdą, neturi įtakos „ViewModel“. Įrišimas į vieną pusę yra naudingas rodant duomenis, kurie gaunami iš dinaminio šaltinio, pavyzdžiui, jutiklių duomenys ar tinklo kanalai, kai vaizdas turėtų atspindėti naujausią „ViewModel“ būseną, tačiau nereikia į jį siųsti atnaujinimų [1].

Pagrindiniai skirtumai

-Atnaujinimo dažnumas: Vienkartinis įrišimas atnaujina rodinį tik vieną kartą sąrankoje, o vienpusis įrišimas nuolat atnaujina rodinį, kai tik keičiasi „ViewModel“.
-Pakeitimo stebėjimas: Vienkartinis įrišimas nestebi „ViewModel“ pokyčių po pradinės sąrankos, tuo tarpu vienpusis įrišimas aktyviai klauso „ViewModel“ pokyčių.
-Naudojimo atvejai: Vienas laikas yra idealus statiniams ar retai keičiantiems duomenims, tuo tarpu į vieną pusę geriau tinka dinaminiams duomenims, kuriuos reikia rodyti realiuoju laiku, be vartotojo sąveikos, turinčios įtakos „ViewModel“.

Apibendrinant galima pasakyti, kad nors abu režimai perkelia duomenis iš „ViewModel“ į rodinį, vienkartinis įrišimas tai daro tik vieną kartą ir nestebi pakeitimų, tuo tarpu vienpusis įrišimas nuolat atnaujina rodinį, pagrįstą „ViewModel“ pakeitimais.

Citatos:
[1] https://www.mvvmcross.com/documentation/fundamentals/data-dinding
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-inding-arget.html
[3] https://stackoverflow.com/questions/41768962/mvvmcross---default-definding-mode-used-in-a-project
[4] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[5] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-bining/binding-mode?view=net-maui-9.0
[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://www.mvvmcross.com/documentation/advanced/custom-data-Briding
[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://www.reddit.com/r/javascript/comments/v993r4/askjs_why_is_oneway_binding_better_than_twoway/