Функция Typescript не запускается - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть следующий машинописный файл в Nativescript:

import { Observable } from 'tns-core-modules/data/observable';
import { isIOS } from "tns-core-modules/platform";
import { Color } from "tns-core-modules/color";
import { request, getFile, getImage, getJSON, getString } from "tns-core-modules/http";

export class HomeViewModel extends Observable {

    items: {
        name: string,
        desc: string, 
        price: string, 
        imageSrc: string, 
     }[];

    getData = getJSON("http://localhost:3000/items").then((r: any) => {
        this.getData = r; // assign it from the response when successful
            console.log("blarg!!!")
        }, (e) => {
    }); 

    onItemLoading(args) {
        // hack to get around issue with RadListView ios background colors: https://github.com/telerik/nativescript-ui-feedback/issues/196
        if (isIOS) {
            var newcolor = new Color("#e6e6e6");
            args.ios.backgroundView.backgroundColor = newcolor.ios;
        }
    }

    constructor() {
        super();
    }
}

Проблема, которую я вижу, заключается в том, что getData никогда не вызывается / не запускается.Как мне вызвать / запустить функцию getData?

Ответы [ 3 ]

0 голосов
/ 14 декабря 2018

Это действительно небезопасно для типа, и вы, вероятно, не хотите этого делать.

getData = getJSON("http://localhost:3000/items").then((r: any) => {
    this.getData = r; // assign it from the response when successful
        console.log("blarg!!!")
    }, (e) => {
}); 

Если вы выставите тип из начального назначения, вы получите:

getData: Promise<void> = ...

Если вы выставите тип из внутреннего присваивания, вы получите:

this.getData = r as any;

Весьма вероятно, что ни один из них на самом деле не является функцией.Вместо этого вы, вероятно, хотели сделать что-то более похожее на:

data: any;

constructor() {
    super();

    getJSON("http://localhost:3000/items").then((r: any) => {
        this.data = r; // assign it from the response when successful
            console.log("blarg!!!")
        }, (e) => {
    });
}
0 голосов
/ 14 декабря 2018

Я думаю, ваш конструктор должен быть на вершине вашего класса.

https://play.nativescript.org/?template=play-tsc&id=1CdnF1&v=2

0 голосов
/ 14 декабря 2018

Вам нужно вызвать его выше в стеке.Или, если вы хотите, чтобы getData запускался при создании объекта, вызовите getData() в своем конструкторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...