繁体   English   中英

从离子项目中的打字稿调用JavaScript函数

[英]Call javascript function from typescript in ionic project

我在离子项目中添加了一个插件,所以我有如下的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;
});

我想在我的Typescript代码中调用sms.send(...)函数。 我试图这样导入文件:

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()函数,请您能帮我吗?

您的呼叫方式不正确。在ts文件中,无需导入js文件。

您可以使用全局范围变量直接调用,也可以为此插件接口创建.d.ts定义文件,并可以在.ts文件中导入。 确保正确安装了插件后,请按照以下步骤从TS文件中调用cordova-sms-plugin

第1步。 您可以使用windows object引用JS variable因此请在.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.log("SuccessFully Done...");
        }, (err: any) => {
            console.log("An error has occuered :" + err.code);
        })

我还在GitHub上找到了一个示例项目,您可以参考以下代码查看代码:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM