我很难理解如何执行此操作(如标题所示),也许有人可以帮助我理解这个过程,我的代码如下:
我的家庭视图模型:
import selector from './selector';
...
function mapStateToProps(state) {
return {
tables: selector.tablesSelector(state),
}
}
我已经完成了arrNoticias 的console.log 我把它放在一个回调函数中它返回[object object]等...然后我做了这个:
的console.log(arrNoticias.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;
并且控制台中的结果是:
TypeError:arrNoticias.getItem不是函数。 (在'arrNoticias.getItem(0)'中,'arrNoticias.getItem'未定义)
我的问题是,这项行动是如何执行的?将数据从视图模型传递到.js文件?
感谢您的时间 此致
答案 0 :(得分:2)
由于该函数发送了一个URL请求,所以它可能是一个异步函数,它在请求时保持不变,这就是为什么你得到了未定义的。通常,您需要发送URL请求的函数来返回promise。根据该承诺,您将在请求完成后按预期结果。所以:
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;
});