Ich versuche Vue-Cordova zusammen mit Cordova-plugin-file-opener2 zu verwenden, um pdfs in ios/android apps zu öffnen.Cordova-Plugins zu Vue-Cordova hinzufügen?
Vue-Cordova definiert, um das Gerät auf den Datum Eigenschaft der App vue Instanz im Zusammenhang Plugins:
data: function() {
return {
cordova: Vue.cordova,
plugins: {
'cordova-plugin-camera': function() {
if (!Vue.cordova.camera) {
window.alert('Vue.cordova.camera not found !')
return
}
Vue.cordova.camera.getPicture((imageURI) => {
window.alert('Photo URI : ' + imageURI)
}, (message) => {
window.alert('FAILED : ' + message)
}, {
quality: 50,
destinationType: Vue.cordova.camera.DestinationType.FILE_URI
})
},
....
ich diese Eigenschaften auf meinem ios Simulator zugreifen kann, aber ich bin nicht in der Lage Plugins zugreifen, die ich über den cordova-cli installieren. Das Cordova Objekt, das belichtet werden soll Datei-opener2 rufen Befehle wie:
cordova.plugins.fileOpener2.open(
filePath,
fileMIMEType,
{
error : function(){ },
success : function(){ }
}
);
Eigenschaften nicht auf dem Vue.cordova Instanz enthalten. Wenn ich versuche, mit ihnen zuzugreifen: Vue.cordova.plugins.fileOpener2
Ich werde undefiniert.
Kann mir jemand sagen, was ich tun muss, um Vue-Cordova Plugins hinzuzufügen oder es irgendwie zu umgehen?
EDIT:
an einer Lösung Mein Versuch nicht funktioniert, aber ich glaube, ich bin immer in der Nähe.
ich die folgenden Schritte unternommen hat:
- https://github.com/pwlin/cordova-plugin-file-opener2 in den Plugin-Ordner meines cordova Projekt
geklont geändert folgendes in
node_modules/vue-cordova/index.js
:Funktion (Modul, Exporte, webpack_require) {
'use strict'; // list here all supported plugins var pluginsList = ['cordova-plugin-camera', 'cordova-plugin-device', 'cordova-plugin-geolocation', 'cordova-plugin-contacts', 'cordova-plugin-file-opener2']; exports.install = function (Vue, options) { // declare global Vue.cordova object Vue.cordova = Vue.cordova || { deviceready: false, plugins: [] }; // Cordova events wrapper Vue.cordova.on = function (eventName, cb) { document.addEventListener(eventName, cb, false); }; // let Vue know that deviceready has been triggered document.addEventListener('deviceready', function() { Vue.cordova.deviceready = true; }, false); // load supported plugins pluginsList.forEach(function (pluginName) { var plugin = __webpack_require__(1)("./" + pluginName); plugin.install(Vue, options, function (pluginLoaded) { if (pluginLoaded) { Vue.cordova.plugins.push(pluginName); } if (Vue.config.debug) { console.log('[VueCordova]', pluginName, '→', pluginLoaded ? 'loaded' : 'not loaded'); } }); }); };
//} // //Funktion (Modul, Exporte, webpack_require) {
var map = { "./cordova-plugin-camera": 2, "./cordova-plugin-camera.js": 2, "./cordova-plugin-contacts": 3, "./cordova-plugin-contacts.js": 3, "./cordova-plugin-device": 4, "./cordova-plugin-device.js": 4, "./cordova-plugin-geolocation": 5, "./cordova-plugin-geolocation.js": 5, "./cordova-plugin-file-opener2": 6 }; function webpackContext(req) { return __webpack_require__(webpackContextResolve(req)); }; function webpackContextResolve(req) { return map[req] || (function() { throw new Error("Cannot find module '" + req + "'.") }()); }; webpackContext.keys = function webpackContextKeys() { return Object.keys(map); }; webpackContext.resolve = webpackContextResolve; module.exports = webpackContext; webpackContext.id = 1;
/*** /},
...
/***/Funktion (Modul, Exporte) {
'use strict'; exports.install = function (Vue, options, cb) { document.addEventListener('deviceready', function() { if (typeof cordova.plugins.fileOpener2 === 'undefined'){ return cb(false); } // pass through the geolocation object Vue.cordova.fileOpener2 = cordova.plugins.fileOpener2; return cb(true); }, false); }; /***/ },
hinzugefügt Plugins in das Datenobjekt in app.vue hinzugefügt: (Ich bin mir nicht sicher, was sonst zu dieser Definition hinzufügen. Irgendwelche Vorschläge)
'cordova-Plugin-Datei-opener2': function() { if (Vue.cordova.fileOpener2) { window.alert ('Vue.cordova.fileOpener2 nicht gefunden!') ! Rückkehr } }
Nachdem diese drei Schritte, ich erwarte, dass {{fileOpener2}} als ein Objekt in meiner Vorlage verfügbar sein, aber es ist nicht. Fehle ich etwas?
Sorry für die bekloppten Fragen finden, Ich bin neu in diesem Bereich. Ich versuche zu verstehen, was Sie meinen, indem Sie eine symbolische Verbindung zum geklonten Repo herstellen (und warum das Repo überhaupt geklont werden muss, wenn es über npm installiert wird). Soweit ich weiß, habe ich Ihre Anweisungen befolgt. Ich habe das benötigte Plugin in das Verzeichnis '@/plugins /' geklont und es der Liste der Plugins in index.js hinzugefügt (siehe Schritt 2). Nach dem Ausführen von npm run build habe ich immer noch keinen Zugriff auf das Plugin. –
@ Kartsims das gleiche Problem mit mir, ich habe nichts in irgendwelchen Dateien geändert, ich habe nur direkt den Code verwendet, auch mit Ihnen versucht oben Antwort, können Sie mir bitte helfen, das zu lösen – Vikram
@ kartsims für sogar auf Funktion ist nicht verfügbar – Vikram