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;
});
我很难理解如何执行此操作(如标题所述),也许有人可以帮助我理解这个过程,我的代码如下:
我的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;
});