Nativescript - 将数组从 home-view-model 传递到 home.js

Nativescript - Pass array from home-view-model to home.js

我很难理解如何执行此操作(如标题所述),也许有人可以帮助我理解这个过程,我的代码如下:

我的home-view-model:

var Observable = require("data/observable").Observable;
var ObservableArray = require("data/observable-array").ObservableArray;
var http = require("http");

function createViewModel() {

    http.getJSON("http://myJsonfile").then(function (r) {
        var arrNoticias = new ObservableArray(r.data);
        return arrNoticias;

    }, function (e) {

    });
}

exports.createViewModel = createViewModel;

我已经完成了 arrNoticias 的 console.log 之前 我已经把它放在回调函数中并且它 returns [object object] 等等...然后我这样做了:

console.log(arrNoticias.getItem(0).titulo);

它 returns 我需要的信息!

然后在我的 home.js 文件中我有这个:

var observableModule = require("data/observable")
var ObservableArray = require("data/observable-array").ObservableArray;
var arrNoticias = require('./home-view-model.js');

console.log(arrNoticias.getItem(0).titulo);

控制台的结果是:

TypeError: arrNoticias.getItem 不是函数。 (在'arrNoticias.getItem(0)'中,'arrNoticias.getItem'未定义)

我的问题是,这个动作是如何执行的?将数据从 view-model 传递到 .js 文件?

感谢您的宝贵时间 此致

由于该函数发送了一个 URL 请求,所以它可能是一个异步函数,它在请求时处于暂停状态,所以这就是你未定义的原因。通常,您会希望您的函数将 URL 请求发送到 return 承诺。基于该承诺,您将在请求完成后得到预期的结果。所以:

function createViewModel() {
    return new Promise<>((resolve, reject) => {
        http.getJSON("http://myJsonfile").then(function (r) {
            var arrNoticias = new ObservableArray(r.data);
            resolve(arrNoticias);
        }, function(e) {
            reject(e);
        });
    }), (e) => {
        console.log(e);  
    })
}

home.js中:

var homeVM= require('./home-view-model.js');
var arrNoticias;

homeVM.createViewModel().then(function(r) {
    arrNoticias = r;
});