0

テンプレート機能からの戻りをモバイルサファリで画面に表示しようとしています。自分のデバイスが devicemotion をサポートしていることがわかります。データを含む vartiltFB のコンソール ログを確認できます。

表示できない、または動作しないのは、モバイル サファリの html の画面に表示されることです。

Template.tapapp.showAngle = function() {

var tiltFB;

if (window.DeviceMotionEvent) {
  window.addEventListener('devicemotion', deviceMotionHandler, false);
  console.log("Devicemotion IS supported on your device.");
} else {

  console.log("Devicemotion Not supported on your device.");
  return "Devicemotion Not supported on your device.";
}

function deviceMotionHandler(eventData) {

  var acceleration = eventData.accelerationIncludingGravity;
  var rawAcceleration = "[" +  Math.round(acceleration.x) + ", " +     Math.round(acceleration.y) + ", " + Math.round(acceleration.z) + "]";

  var facingUp = -1;
  if (acceleration.z > 0) {
    facingUp = +1;
  }

  tiltFB = Math.round(((acceleration.y + 9.81) / 9.81) * 90 * facingUp);

  console.log(tiltFB);

  //Meteor.defer(function () {
  //     $('#angel').html(tiltFB);
  //     return tiltFB;
  });
  return tiltFB;
}

};

ここに私のhtmlがあります:

<template name="tapapp">
  <div class="container">
  <h3 class="angel-class" id="angle">{{showAngle}}</h3>
</template>
4

1 に答える 1

1

これを試してください。showAngleヘルパーに値を返し、Session.set/getを介してリアクティブに接続する必要があります。

クライアントjs

function deviceMotionHandler(eventData) {

  var acceleration = eventData.accelerationIncludingGravity;
  var rawAcceleration = "[" +  Math.round(acceleration.x) + ", " +     Math.round(acceleration.y) + ", " + Math.round(acceleration.z) + "]";

  var facingUp = -1;
  if (acceleration.z > 0) {
    facingUp = +1;
  }

  tiltFB = Math.round(((acceleration.y + 9.81) / 9.81) * 90 * facingUp);

  console.log(tiltFB);

  //Meteor.defer(function () {
  //     $('#angel').html(tiltFB);
  //     return tiltFB;
  //});
  Session.set("tiltFB", tiltFB);
}


Template.tapapp.showAngle = function() {
    return Session.get("tiltFB");
}

Meteor.startup(function() {
    if (window.DeviceMotionEvent) {
        window.addEventListener('devicemotion', deviceMotionHandler, false);
        console.log("Devicemotion IS supported on your device.");
    } else {
        console.log("Devicemotion Not supported on your device.");
    }
});
于 2013-02-21T22:02:59.957 に答える