我是ionic2的tiro。我的项目是关于使用蓝牙连接一些设备。我使用非原生连接蓝牙插件来处理我的工作,但插件仅用于ionic1,我想在ionic3上使用。
插件上有两个js文件(a.js
和b.js
),我检查了plugin.xml
js模块的clobbers目标是window.a
和{{1正在调用b.js
以下示例a.js
代码
plugin.xml
...
<js-module src="www/a.js" name="A">
<clobbers target="window.a" />
</js-module>
...
文件代码:
a.js
所以我只需要在我的主页cordova.define("cordova-data.a", function(require, exports, module) {
"use strict";
...
module.exports = {
isCorrect: function (success, fail){
cordova.exec(success, fail, 'aPlugin', 'isCorrect', []);
}
}
...
}
)中包含b.js
文件。
这里是home.ts
文件的代码:
b.js
这是我var a = angular.module('a', []).factory('$a', ['$q', '$timeout', function($q, $timeout){
var error = {
error: "failed",
message: "failed to get data"
}
...
var isCorrect = function() {
var q = $q.defer();
if (window.a === undefined) {
q.reject(error);
} else {
window.a.isCorrect(
function(ob) {
q.notify(ob);
},
function(ob) {
q.reject(ob);
}
);
}
return q.promise;
}
...
return {
isCorrect: isCorrect
};
}]);
文件中的代码:
home.ts
这是我的index.html文件中的代码:
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
declare var a: any;
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
constructor(
public navCtrl: NavController,
) {
console.log(a);
}
当我在浏览器上运行它时,它会像这样返回Object:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
...
<script src="assets/js/a.js"></script>
...
</head>
<body>
{_invokeQueue: Array(1), _configBlocks: Array(0), _runBlocks: Array(0), requires: Array(0), name: "a", …}
?抱歉我的英语不好。