我是Ionic和Cordova的新手。我正在尝试添加插件
1.使用"ionic start myproj"
2.使用以下评论添加了cordova插件
cordova plugin add https://github.com/domaemon/org.apache.cordova.plugin.helloworld.git
3.在离子app.js中添加navigator.helloworld.say();
,如下所述
.run(function($ionicPlatform) {
$ionicPlatform.ready(function() {
// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
// for form inputs)
if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
cordova.plugins.Keyboard.disableScroll(true);
}
if (window.StatusBar) {
// org.apache.cordova.statusbar required
StatusBar.styleLightContent();
}
navigator.helloworld.say();
});
})
当我通过“离子服务”运行代码时..我没有收到问候语警报,但我在控制台中收到以下错误,如下所示
“无法读取 navigator.helloworld.say();
行的未定义属性'type'请告诉我,我是否需要在任何xml中添加任何条目以添加mannual插件或者我是否会错过任何内容?
答案 0 :(得分:2)
插件仅适用于真实设备或模拟器,因为它们需要cordova.js
才能正常运行,只有在设备或模拟器上运行应用程序时才能使用。请参阅此行index.html
:
<!-- cordova script (this will be a 404 during development) -->
<script src="cordova.js"></script>
cordova.js
包含应用程序的所有插件js。
有关详细信息,请参阅此answer。
答案 1 :(得分:0)
第一个解决方案: 1.检查此插件是否被http://ngcordova.com/包裹。
第二种解决方案: 2.写包装器=角度工厂:
.factory('factoryname', ['$q', '$window','$state', function ($q, $window, $state) {
return {
callStateListener: function () {
var q = $q.defer();
if (!$window.cordova) {
q.reject('Not supported without cordova.js');
} else {
navigator.helloworld.say();
return q.promise;
},
第3个解决方案: 将['$ window']依赖项添加到您想要使用插件的模块中。并使用navigator.helloworld.say();
第4个解决方案将此js代码复制并粘贴到其顶部的角度代码中并使用helloworld.say();
答案 2 :(得分:0)
Cordova插件在浏览器中进行开发时不起作用,因为每个插件都会访问浏览器中没有的特定API(如摄像头,麦克风,加速度计)。此外,某些插件在模拟器中不起作用,例如Camera插件,因此需要在物理设备上进行开发。
http://forum.ionicframework.com/t/can-not-use-cordova-plugins-inside-ionic-project/32459/4