Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kā vienreizēja saistīšana atšķiras no vienvirziena saistīšanās ar MVVMCross


Kā vienreizēja saistīšana atšķiras no vienvirziena saistīšanās ar MVVMCross


MVVMCROSS vienreizēja saistīšanās un vienvirziena saistīšana ir divi atšķirīgi datu saistīšanas režīmi, kas kalpo dažādiem mērķiem.

Vienreizēja iesiešana

Vienreizējs iesiešana pārsūta datus no ViewModel uz skatu tikai vienu reizi, kad sākotnēji tiek iestatīts saistošais avots. Pēc šīs sākotnējās pārsūtīšanas iesiešana netiek uzraudzīta ViewModel izmaiņas un neatjaunina skatu, ja vien pats saistošais avots netiek atiestatīts. Šis režīms ir noderīgs laukiem, kas ir konfigurējami, bet pēc iestatīšanas bieži nemainās. Piemēram, MVVMCross statiskā teksta iestatīšanai no valodas failiem tiek izmantota vienreizēja iesiešana, jo lietotājiem ir ierasts vienreiz izvēlēties valodu un nemainīt to bieži [1].

Vienvirziena iesiešana

No otras puses, vienvirziena iesiešana nepārtraukti atjaunina skatu ikreiz, kad mainās atbilstošais īpašums ViewModel. Tas nozīmē, ka visas izmaiņas ViewModel īpašumā automātiski tiks atspoguļotas skatā. Tomēr izmaiņas, kas veiktas tieši skatā, neietekmē ViewModel. Vienvirziena iesiešana ir noderīga, parādot datus, kas nāk no dinamiska avota, piemēram, sensoru dati vai tīkla plūsmas, kur skatu jāatspoguļo skataModeļa jaunākais stāvoklis, bet tam nav jānosūta atjauninājumi tam [1].

Galvenās atšķirības

-Atjaunināšanas frekvence: vienreizējs iesiešanas atjauninājums skatu tikai vienu reizi iestatījumos, savukārt vienvirziena iesiešana nepārtraukti atjaunina skatu ikreiz, kad mainās skatsModelis.
-Mainīt uzraudzību: vienreizēja iesiešana netiek uzraudzīta ViewModel izmaiņas pēc sākotnējās iestatīšanas, turpretī vienvirziena iesiešana aktīvi klausās izmaiņas ViewModel.
-Lietošanas gadījumi: Vienreizējs ir ideāli piemērots statiskiem vai reti mainīgiem datiem, savukārt vienvirziena ir labāk piemērota dinamiskiem datiem, kas jāparāda reāllaikā bez lietotāja mijiedarbības, kas ietekmē skatuModeli.

Rezumējot, lai gan abi režīmi pārsūta datus no ViewModel uz skatu, vienreizēja iesiešana to dara tikai vienu reizi un netiek uzraudzīta, lai izmaiņas, turpretī vienvirziena iesiešana nepārtraukti atjaunina skatu, pamatojoties uz ViewModel izmaiņām.

Atsauces:
[1] https://www.mvvmcross.com/documentation/fundamentals/data
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-tonging-target.html
[3] https://stackoverflow.com/questions/41768962/MVVMCROSS-Default
[4] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[5] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-9.0
.
[7] https://www.mvvmcross.com/documentation/advanced/custom-data saistoši
[8] https://github.com/mvvmcross/mvvmcross/issues/29
[9] https://stackoverflow.com/questions/27803448/data
[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/