首页 > 解决方案 > Nativescript - 从导入的函数更新 viewModel

问题描述

我正在尝试在 NS8 应用程序中创建一个通用函数文件。其中一项功能必须执行一些 http 请求,然后更新 viewModel 以显示加载的数据。当函数放在单独的文件中时,我无法实现这一点。这基本上就是我现在所拥有的。

main.js

import { ApplicationSettings, Http, fromObject } from '@nativescript/core';
import * as commFunc from '../functions.js';

var page,
  viewMode = new fromObject({
    foo: 'bar'
  });

export function onLoaded(args){
    page = args.object;
    page.bindingContext = viewModel;

    commFunc.getPosition();
}

函数.js

import { ApplicationSettings, Http, Observable } from '@nativescript/core';
var viewModel = new Observable();

export function getPosition(){
  // beep boop bap calculating
  viewModel.foo = 'baz';
}

我也尝试将其viewModel作为参数传递,但这也不起作用。

标签: javascriptnativescript

解决方案


可能最干净的方法是让 getPosition 返回一个值,然后调用者将该值分配给 viewModel,例如

viewModel.set("foo",commFunc.getPosition());

也就是说,我有将 viewModel 作为参数传递的函数。不过,您需要删除 function.js 中的本地声明。


推荐阅读