我遇到Device Orientation,Ionic和Cordova / ngCordova的问题 我已经运行了命令: " cordova插件添加cordova-plugin-device-orientation" 安装设备方向插件 安装没有问题。
然后我将以下代码添加到我的应用程序中:
.controller('MyCtrl', function ($scope,$cordovaDeviceOrientation) {
$cordovaDeviceOrientation.getCurrentHeading().then(function(result) {
var magneticHeading = result.magneticHeading;
var trueHeading = result.trueHeading;
var accuracy = result.headingAccuracy;
var timeStamp = result.timestamp;
$scope.values=magneticHeading+" "+trueHeading+" "+accuracy+" "+timeStamp;
}, function(err) {
// An error occurred
});
})
执行cordova运行android后我得到了这个错误。 无法读取属性' getCurrentHeading'未定义的。
我在浏览器,Genymotion或三星Galaxy Tab 4上测试了这段代码,但总是遇到同样的错误。
我做错了什么?
答案 0 :(得分:2)
您需要了解的两件事情:
第一:这种插件,如设备方向,一旦使用加速计硬件工作,就需要在真实设备中进行测试。
第二:您需要使用DeviceReady EventListner来使用插件,因此,您需要执行以下操作:
document.addEventListener("deviceready", function () {
$cordovaDeviceOrientation.getCurrentHeading().then(function(result) {
var magneticHeading = result.magneticHeading;
var trueHeading = result.trueHeading;
var accuracy = result.headingAccuracy;
var timeStamp = result.timestamp;
$scope.values=magneticHeading+" "+trueHeading+" "+accuracy+" "+timeStamp;
}, function(err) {
// An error occurred
});
}, false);
如果你愿意,这里有angularjs + cordova + angular-material的种子: https://github.com/marioaleogolsat/cordova-angular-angularMaterial-seed
答案 1 :(得分:0)
您的设备可能没有指南针。