Вызов функции javascript из машинописного текста в ионном проекте

Я добавил плагин в свой ионный проект, поэтому у меня есть код java и код JS следующим образом:

cordova.define("cordova-sms-plugin.Sms", function(require, exports, module) {
'use strict';

var exec = require('cordova/exec');

var sms = {};

function convertPhoneToArray(phone) {
    if (typeof phone === 'string' && phone.indexOf(',') !== -1) {
        phone = phone.split(',');
    }
    if (Object.prototype.toString.call(phone) !== '[object Array]') {
        phone = [phone];
    }
    return phone;
}


sms.send = function(phone, message, filename, options, success, failure) {
    // parsing phone numbers
    phone = convertPhoneToArray(phone);

    // parsing options
    var replaceLineBreaks = false;
    var androidIntent = '';
    if (typeof options === 'string') { // ensuring backward compatibility
        window.console.warn('[DEPRECATED] Passing a string as a third argument is deprecated. Please refer to the documentation to pass the right parameter: https://github.com/cordova-sms/cordova-sms-plugin.');
        androidIntent = options;
    }
    else if (typeof options === 'object') {
        replaceLineBreaks = options.replaceLineBreaks || false;
        if (options.android && typeof options.android === 'object') {
            androidIntent = options.android.intent;
        }
    }

    // fire
    exec(
        success,
        failure,
        'Sms',
        'send', [phone, message, filename, androidIntent, replaceLineBreaks]
    );
};

sms.hasPermission = function(success, failure) {
    // fire
    exec(
        success,
        failure,
        'Sms',
        'has_permission', []
    );
};

module.exports = sms;
});

И я хочу вызвать функцию sms.send(...) в моем коде Typescript. Я пробовал импортировать такой файл:

import sms from '../../../plugins/cordova-sms-plugin/www/sms.js';

или же

import * as Sms from '../../../plugins/cordova-sms-plugin/www/sms.js';

или же

window['window']['sms']['send'](...)

но ничего не работает, ionic не находит функцию send(), не могли бы вы мне помочь, пожалуйста?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
1 490
1

Ответы 1

Вы звоните некорректно. В ваш файл ts не нужно импортировать файл js.

Либо вы можете вызвать напрямую, используя глобальную переменную области видимости, либо вы можете создать файл определения .d.ts для этого интерфейса плагина и импортировать его в свой файл .ts. Убедившись, что ваш плагин установлен правильно, выполните следующие действия, чтобы вызвать cordova-sms-plugin из файла TS.

Шаг 1. Вы можете ссылаться на JS variable, используя windows object, поэтому объявите его в файле .ts

declare var window: any;

Шаг 2. Теперь можно называть это как window.sms.send

 let phone: string;
//Set the value of phone
let message: string;
//Set the value of message
let options  = {
            "replaceLineBreaks: false"
            //
        };
 //Call the function
 window.sms.send(phone,message,options,(result: any) => {
            console.info("SuccessFully Done...");
        }, (err: any) => {
            console.info("An error has occuered :" + err.code);
        })

Я также нашел для вас образец проекта на GitHub, вы можете сослаться на него, чтобы изучить код:

https://github.com/abritopach/ionic-receiver-sms

Спасибо, я пробовал, но у меня ошибка: 07-13 13: 17: 34.643 30659-30659 / io.ionic.starter D / SystemWebChromeClient: ng: ///AppModule/PhotoPage.ngfactory.js: Строка 96: ОШИБКА 07- 13 13: 17: 34.643 30659-30659 / io.ionic.starter I / chromium: [ИНФОРМАЦИЯ: КОНСОЛЬ (96)] «ОШИБКА», источник: ng: ///AppModule/PhotoPage.ngfactory.js (96) 07- 13 13: 17: 34.646 30659-30659 / io.ionic.starter D / SystemWebChromeClient: ng: ///AppModule/PhotoPage.ngfactory.js: Строка 96: КОНТЕКСТ ОШИБКИ 07-13 13: 17: 34.646 30659-30659 / io .ionic.starter I / chromium: [ИНФОРМАЦИЯ: КОНСОЛЬ (96)] "КОНТЕКСТ ОШИБКИ", источник: ng: ///AppModule/PhotoPage.ngfactory.js (96)

Nooby 13.07.2018 13:30

Ваше приложение корректно работало без этого плагина?

NullPointer 13.07.2018 13:58

Да, нет проблем, когда я не пытаюсь использовать этот плагин. (Я ответил ниже, чтобы добавить экран с ошибкой)

Nooby 13.07.2018 14:02

Можете ли вы показать свой код там, где вы вызываете плагин sms? вы можете поделиться им в любой онлайн-среде IDE

NullPointer 13.07.2018 16:29

@ Nooby - вы можете сослаться на это для справки: github.com/abritopach/ionic-receiver-sms

NullPointer 13.07.2018 16:37

Я пробовал вот так: ideone.com/YsAbiz, и у меня есть html-страница, которая вызывает функцию tryPlugin2 ().

Nooby 17.07.2018 09:28

Другие вопросы по теме