Как мне импортировать и использовать модуль с использованием core JS в NativeScript

#javascript #nativescript #node-modules

#javascript #nativescript #узел-модули

Вопрос:

Проблема: Использование модулей NPM из NativeScript с использованием Core Javascript

Я новичок в NativeScript и пытаюсь использовать модуль FancyAlert NPM:

https://github.com/NathanWalker/nativescript-fancyalert

В своем readme они показывают очень простой пример использования TypeScript, вот так:

 import { TNSFancyAlert, TNSFancyAlertButton } from "nativescript-fancyalert";
.
.
.
public showSuccess() {
    TNSFancyAlert.showSuccess(
      "Success!",
      "Fancy alerts are nice.",
      "Yes they are!"
    );
  }

  

и в их XML-файле они просто называют это как обычно:

  <Button text="Alert Success" tap="{{showSuccess}}" />
  

Как преобразовать это в core JS

Итак, я не использую TypeScript. Я не могу заставить это простое предупреждение работать. Я пытался:

в моем main-view-model.js

 const fancyAlert = require("nativescript-fancyalert");

.
.
.

fancyAlert.showSuccess(
                    "Success!",
                    "You are logged in.",
                    "Success!"
                  );

  

не работает.

Кто-нибудь может помочь мне использовать этот модуль с использованием core JS?

Спасибо.

Комментарии:

1. github.com/NathanWalker/nativescript-fancyalert/issues/24

Ответ №1:

Попробуйте: fancyAlert.TNSFancyAlert.showSuccess() .

[РЕДАКТИРОВАТЬ] Это действительно должно сработать, поскольку это зеркальное отражение решения, приведенного в файле проблем, на который ссылается Нарендра Монгия в вашем вопросе. Следует иметь в виду, что это обещание, поэтому давайте добавим catch() блок, чтобы выявить любые ошибки.

 const fancyAlert = require("nativescript-fancyalert");

// ...

fancyAlert.TNSFancyAlert.showSuccess(
    "Success!",
    "You are logged in.",
    "Success!"
)
.then((resolution) => {
    console.log("[TNSFancyAlert] showSuccess() succeeded.", resolution);    
})
.catch((error) => {
    console.error("[TNSFancyAlert] showSuccess() failed.", error);
});
  

Вы также можете обнаружить, что просто вызываете его не из того места в своем коде.

Комментарии:

1. @JohnS. Я отредактировал для уточнения; как насчет сейчас?

2. @JohnS. Я заметил, что в вашем примере JS контекст вызова fancy alert неясен; вы оборачиваете это внутри showSuccess функции, верно? Имейте в виду, что вы должны showSuccess правильно связать XML и JS-файл, чтобы он работал. Смотрите документацию по привязке данных для получения дополнительных примеров (как в TypeScript, так и в JavaScript). Вы также можете обратиться к TypeScript Playground , чтобы преобразовать любые фрагменты TS, которые вы найдете в другом месте, в JS.

3. во-первых, большое спасибо, что нашли время, чтобы попытаться мне помочь. Это странно…. Я использовал ваш код, и приложение запускается, но предупреждения нет, и ошибки тоже. Вот он на игровой площадке: play.nativescript.org/?template=play-jsamp;id=vCLv25amp;v=2 Вы видите, где я здесь ошибаюсь??

4. Ваша игровая площадка показывает ошибку, ОШИБКА: [TNSFancyAlert] Сбой showSuccess(). Ошибка ссылки: не удается найти переменную: SCLAlertView