Шаблон MVVM в NativeScript - как его использовать? - PullRequest
2 голосов
/ 03 июня 2019

Проблема

Я просто не могу понять модель представления в NativeScript

Мне трудно понять, как модели представления работают в NativeScript. Я понимаю концепцию высокого уровня - шаблон MVVM позволяет нам создавать наблюдаемые объекты - и наш пользовательский интерфейс обновляется при изменении значений.

Вот простой пример:

Основные-page.js

var createViewModel = require("./main-view-model").createViewModel;

function onNavigatingTo(args) {

    var page = args.object;

    page.bindingContext = createViewModel();

}

exports.onNavigatingTo = onNavigatingTo;

главный ракурс-model.js

var Observable = require("tns-core-modules/data/observable").Observable;

function getMessage(counter) {
    if (counter <= 0) {
        return "Hoorraaay! You unlocked the NativeScript clicker achievement!";
    } else {
        return counter + " taps left";
    }
}

function createViewModel() {
    var viewModel = new Observable();
    viewModel.counter = 42;
    viewModel.message = getMessage(viewModel.counter);

    viewModel.onTap = function() {
        this.counter--;
        this.set("message", getMessage(this.counter));
    }

    return viewModel;
}

exports.createViewModel = createViewModel;

Я понимаю, кое-что, что происходит. Но не все.

У меня есть вопросы ...

  1. Как бы вы добавили новую функцию, например, функцию проверки электронной почты? Перейдет ли он на страницу просмотра модели или просто на страницу Javscript?
  2. Допустим, я добавил новое текстовое поле в пользовательский интерфейс. У меня есть функция крана. Куда идет моя функция?

Так что в этом случае все, что связано с пользовательским интерфейсом, должно идти в функцию createViewModel? Это верно?

Я также видел в примерах приложений, где разработчик вообще не использует модели представления - кажется, он просто создает его как наблюдаемый объект.

Спасибо, что посмотрели. Я знаю, что я близок к пониманию, но это bindingContext , и модель представления меня немного смущает. [Я прочитал все в NS документах]

John

Ответы [ 2 ]

1 голос
/ 04 июня 2019

Ответ любой из них должен работать . Вы можете поместить функцию проверки или касания в модель представления или в коде файла, и вам решать, какой из них лучше для вас.

Если вы поместите его в модель представления, вы будете использовать привязку к событию (tap="{{ functionName }}" Или, если вы поместите его в код за файлом, вы просто экспортируете имя функции и просто будете ссылаться на имя функции в XML (tap="functionName" ).

Предоставляя такую ​​гибкость, вы можете разделять свой код, сохраняя легкий вес файлов.

0 голосов
/ 04 июня 2019

Приведенный выше ответ был в порядке.Но для новичков в нативном скрипте нужно вкратце изучить Constructor JavaScript Concepts.Потому что все эти строки кода включают понятия Constructor и Object.Если вы овладеете этими двумя вещами, вы можете играть с нативным скриптом.

И мое личное мнение состоит в том, чтобы использовать fromObject, а не просто новый Observable ().причина в том, что он очень похож на концепцию объекта и конструктора java-скрипта.


function Sample_function() {

   var viewModel = new observableModule.fromObject({
        firstname: "Rama",
        lastname: "Krishna",

         on_btn_tap : funtion(args){
           console.log(`${this.firstname} ${this.lastname}`);
           // very easy to access object variables and functions using 'this'
         },

      });


      return viewModel;
 }

module.exports = Sample_function;

Итак, сначала перейдите к концепции конструктора, затем используйте fromObject для лучшей кривой обучения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...