1週間前にnativescriptを使用して小さなアプリケーションを作成しています。 アイテムのリストをリスト表示しています。アイテムがクリックされると、リモートサーバーにdeatilsのリクエストを出しています。私の意図は、応答を取得し、別のページに文脈でそれを送信することです。ここ はアイテムが私が部屋を印刷するとき、私は何もnativescriptでクラス内のメソッドを適切に公開する方法
import config = require("../config");
import requestor = require("../request");
export class HotelDetailViewModel {
getRooms(id: number) {
var url = config.apiUrl + "hotels/" + id;
var rooms = [];
requestor.get(url).then((response) => {
response.hotel.room_types.forEach(room => {
console.log(room.name);
rooms.push({
name: room.name,
price: room.price,
id: room.id
});
});
});
return rooms;
}
}
このファイルが正しく応答を印刷しないが、私はされ得る
import { HotelDetailViewModel } from "../../shared/view-models/hotel-detail-view-model";
import navigationModule = require("../../shared/navigation");
export function selectHotel(args) {
let id = args.view.HotelId;
var hotel = new HotelDetailViewModel();
var rooms = hotel.getRooms(id);
console.log(rooms);
navigationModule.goToHotelDetail(rooms);
}
をクリックされたときに、この機能がトリガされた私の試み
です上のスニペットでgetRoomsを呼び出すと何も得られません。何か案が?
私はそれを動作させる方法を理解することができます。
私がしようとしていることを達成するためのより良いアプローチがある場合は、私にどのように教えてください。 getRooms()はまだhttpリクエストを行っているとrooms
変数は任意の項目を押していない状態であるため、あなたconsole.log
で事前
あなたの方法は、非同期呼び出しを行うようだと、それは空のリストを返す理由です。あなたがconsole.logにそれを渡したときには満たされませんでした。約束を返すようにして、延期されたデータの処理を呼び出し側に委任してください。 – Sombriks