2016-11-14 10 views
0

このアクションを実行する方法を理解するのは難しいです(タイトルが言うように)、誰かがプロセスを理解する助けになるかもしれません。以下:Nativescript - home-view-modelからhome.jsに配列を渡す

マイホームビューモデル:私は私は、コールバック関数内でそれをパットしていると、それは、[オブジェクトのオブジェクト]を返す前にarrNoticias のはconsole.logを行っている

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; 

私はこれをやった:

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

とコンソールの結果は次のとおりです。

例外TypeError:arrNoticias.getItemは関数ではありません。 ( 'arrNoticias.getItem(0)'、 'arrNoticias.getItem'は定義されていません)

私の質問は、このアクションはどのように実行されますか?ビューモデルから.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

こんにちはディンル、答えをありがとう、私はにconsole.log(arrNoticias)を行うときit'sは、動作していません。 home.js:8:12:未定義 – Japa

+0

はちょうど答えを更新しました –

+0

私のログ:home.js:12:12:undefined – Japa

関連する問題