2017-06-11 8 views
0

私のようなコードがある場合は、次の私は、再利用可能な部分を取得し、それを呼び出すようにしたい場合はアップデート外部に必要なモジュールでJSONレスポンスからの眺めモデル/プラグイン

var observableModule = require("data/observable"); 

    var viewModel = new observableModule.Observable(); 
    viewModel.set("ip", "none"); // initial value 

    function onLoaded(args) { 
     var page = args.object; 
     page.bindingContext = vm; 

     fetch("http://httpbin.org/ip", { 
      method: "GET", 
      headers: { "Content-Type": "application/json" } 
     }) 
     .then(function (res) { return res.json(); }) 
     .then(function (data) { 
      console.log(data.origin); // make sure you are getting the value 
      viewModel.set("ip", data.origin); // binding to "price" 

     }) 
    } 
    exports.onLoaded = onLoaded; 

Nativescript pass fetch response data to a level textから) requireメソッドを使用して外部ファイル。このコードからjsonの応答を渡すにはどうすればいいでしょうか:

ここに戻るには?

<!-- begin snippet: js hide: false console: true babel: false --> 
var observableModule = require("data/observable"); 
var fetchIt = require("./fetch.js"); 
var viewModel = new observableModule.Observable(); 
viewModel.set("ip", "none"); // initial value 

function onLoaded(args) { 
    var page = args.object; 
    page.bindingContext = vm; 
    var data = fetchIt.fetch; 
    viewModel.set("ip", data); 
} 
exports.onLoaded = onLoaded; 
<!-- language: lang-js --> 

私はこのコードは非常に実行するだけで、私が達成したいと思っています何のための例として、それを使用するつもりはないことを知っています。

ありがとうございます。

答えて

2

fetch promiseを返すと、.thenを実行して他のjsファイルに変数を割り当てることができます。私はタイプスクリプトに固執しようとしますが、私は次の変更があなたを助けるはずだと信じています。

<!-- begin snippet: js hide: false console: true babel: false --> 
//this is fetch.js 

    exports.fetch = function() { 
    return fetch("http://httpbin.org/ip", { 
     method: "GET", 
     headers: { "Content-Type": "application/json" } 
    }) 
    .then(function (res) { return res.json(); }) 
    .then(function (data) { 
     console.log(data.origin); // make sure you are getting the value 
     return data; 
    })}; 
<!-- language: lang-js --> 

<!-- begin snippet: js hide: false console: true babel: false --> 
var observableModule = require("data/observable"); 
var fetchIt = require("./fetch.js"); 
var viewModel = new observableModule.Observable(); 
viewModel.set("ip", "none"); // initial value 

function onLoaded(args) { 
    var page = args.object; 
    page.bindingContext = vm; 
    var data = fetchIt.fetch.then(function (data) { 
     viewModel.set("ip", data); 
    } 
} 
exports.onLoaded = onLoaded; 
<!-- language: lang-js --> 
+0

素晴らしい!本当にありがとう。私はシニアプロジェクトのためにこのようなものに取り掛かりつつあり、あなたの助けは非常に貴重です。あなたが私に従うならば、私はあなたの脳を他の問題でもっと拾いたいと思っています。ありがとう! – befuddled

関連する問題