2016-08-08 11 views
0

Я использую, чтобы получить TextField, используя getViewById(), чтобы применить к нему native android filters. Как я могу сделать это из ViewModel без нарушения правил MVVM-архитектуры?Nativescript getViewById from ViewModel

+0

Что такое встроенный фильтр андроидов? Google не смог мне это сказать. – WoIIe

+0

Мне было не понятно, извините ... это означает: https://developer.android.com/reference/android/text/InputFilter.LengthFilter.html – Terhoraj

+0

И вот где я начал. Это работает https://github.com/NativeScript/NativeScript/issues/1338 Мне нужно это же поведение, но из viewModel – Terhoraj

ответ

1

Вы не можете получить доступ к TextField из ViewModel, не нарушая шаблон MVVM.

В любом случае, я бы посоветовал вам просто позвонить getViewById() из ViewModel, чтобы установить собственную функцию фильтра андроида, так как MVVM implementation of NativeScript не назначен для решения этой проблемы. Вам не нужно бояться, что это плохая практика.

+0

Любой пример кода, как мне получить представление из ViewModel, поскольку я получаю только сбои. – Terhoraj

+0

Есть ли сообщения об исключениях из ваших сбоев? можете ли вы предоставить их, пожалуйста? – WoIIe

+0

Я понял, что делать. В navigatedTo (args) я получил var page = args.object; то я получил var myTextField = page.getViewById («myTextField»); Я передал эту ссылку в свой режим просмотра, вызвав функцию viewModel.someFunction (myTextField); Затем из viewModel я могу использовать эту ссылку myTextField и делать все, что мне нужно, в этом случае установите anroid.setFilters ... – Terhoraj