2016-11-14 32 views
0

我很難理解如何執行此操作(如標題所示),也許有人可以幫助我理解過程,我的代碼是如下:Nativescript - 將數組從主視圖模型傳遞到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; 

我已經我已經推吞下一個回調函數中,並返回[對象對象]之前完成arrNoticias 的的console.log等...然後我做了這個:

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

它返回我需要的信息!

然後在我的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); 

,結果在控制檯是:

類型錯誤:arrNoticias.getItem不是一個函數。 (在'arrNoticias.getItem(0)','arrNoticias.getItem'是undefined)

我的問題是,這個動作是如何執行的?將數據從視圖模型傳遞給.js文件?

感謝您的時間 問候

回答

1

由於該功能發送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); 
    }) 
} 

home.js

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

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

喜亭樂,感謝你回答,但it's不工作,當我這樣做的console.log(arrNoticias);在home.js,控制檯說:home.js:8:12:undefined – Japa

+0

剛剛更新了答案 –

+0

我的日誌:home.js:12:12:undefined – Japa

相關問題