首页 > 解决方案 > NativeScript 核心 TextField onTextChange 在模型和外部模型中

问题描述

我正在使用 NativeScript 5.0 核心,似乎没有方法可以在文本字段上执行 textChange 事件。我的想法是这样的:

<TextField class="width90" text="{{ productPrize }}" editable="true" textChange="{{ onTexTextChange }}"/>

在js方面:

exports.onReSonTexTextChangecanPrize = function (args) {
  alert(test);
};

这个sintax在“点击”事件中对我来说很好,但我读到了一些东西,比如在NativeScript core 5.0中没有办法做到这一点。

我在 NativeScript doc 中找到了一个在模块中执行此操作的方法:

const observableModule = require("tns-core-modules/data/observable");

function HomeViewModel() {
    const viewModel = observableModule.fromObject({
        productCode: "",
        productPrize: ""
    });

    viewModel.addEventListener(observableModule.Observable.propertyChangeEvent, (args) => {
        // args is of type PropertyChangeData
        console.log("propertyChangeEvent [eventName]: ", args.eventName);
        console.log("propertyChangeEvent [propertyName]: ", args.propertyName);
        console.log("propertyChangeEvent [value]: ", args.value);
        console.log("propertyChangeEvent [oldValue]: ", args.oldValue);
        console.log("propertyChangeEvent [object]: ", args.object);
    });


    return viewModel;
}

module.exports = HomeViewModel;

我正确获取了日志,但我不知道如何将相应的值导出到模型。

我有这个代码来连接视图:

const HomeViewModel = require("./home-view-model");

exports.onNavigatingTo = function(args) {
  page = args.object;
  mv = page.bindingContext = new HomeViewModel();
};

我想知道如何像示例一样做到这一点,但是知道如何在模块上开发它也会很有趣。

标签: javascripteventsnativescript

解决方案


最后我找到了一个方法,但我不知道它是否是一个“干净”的解决方案或者是否有更好的解决方案:

page.getViewById("texFieldId").addEventListener("textChange", function(args){
    console.log("text changed");
  })

推荐阅读