Nativescript-将数组从主视图模型传递到home.js

Nativescript-将数组从主视图模型传递到home.js,nativescript,Nativescript,我很难理解如何执行此操作(如标题所示),也许有人可以帮助我理解此过程,我的代码如下: 我的主视图模型: var Observable = require("data/observable").Observable; var ObservableArray = require("data/observable-array").ObservableArray; var http = require("http"); function createViewModel() { http.ge

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

我的主视图模型:

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;
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);
我已经做了一个arrnotifias的console.log,然后把它放在回调函数中,它返回[object]等等。然后我做了以下工作:

console.log(arrnotifias.getItem(0.titulo))

它会返回我需要的信息

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

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;
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:arrnotifias.getItem不是函数。(在“arrnotifias.getItem(0)”中,“arrnotifias.getItem”未定义)

我的问题是,这个动作是如何执行的?将数据从视图模型传递到.js文件

谢谢你的时间

视为发送URL请求的函数,因此它可能是一个异步函数,在请求时处于保留状态,因此这就是未定义的原因。通常,您希望发送URL请求的函数返回承诺。基于这一承诺,您将在完成请求后获得预期的结果。因此:

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);  
    })
}

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

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);  
    })
}

嗨,丁勒,谢谢你的回答,但当我使用console.log(arrNoticias)时,它不起作用;在home.js中,控制台显示:home.js:8:12:undefinedmy log:home.js:12:12:Undefinedc您能理解发生了什么吗?我真的不知道!!。我认为问题在于,不知何故,您不能通过这个
var arrnocationias=require('./home-view-model.js')从主视图模型中要求对象。你能再检查一下路径吗?路径是正确的,因为我在home.view.model.js中硬编码了一些东西,比如:exports.createViewModel=“teste”;我在我的家里得到了价值。谢谢你的回答,但当我做console.log(arrNoticias)时,它不起作用;在home.js中,控制台显示:home.js:8:12:undefinedmy log:home.js:12:12:Undefinedc您能理解发生了什么吗?我真的不知道!!。我认为问题在于,不知何故,您不能通过这个
var arrnocationias=require('./home-view-model.js')从主视图模型中要求对象。你能再检查一下路径吗?路径是正确的,因为我在home.view.model.js中硬编码了一些东西,比如:exports.createViewModel=“teste”;我在我的家里得到了价值