【问题标题】:Javascript / meteor android return objects to templatesJavascript/meteor android将对象返回到模板
【发布时间】:2016-05-13 20:38:58
【问题描述】:

我的流星应用中有以下代码

if (Meteor.isClient) {
  Meteor.startup(function(){

    var onSuccess = function(acceleration){
      alert( acceleration);
    };

    var onError = function(acceleration){
      return "error";
    }

    var options = { frequency: 3000 };  // Update every 3 seconds

    var getAcc = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);

  });
}

它的作用是每 3 秒检索一次 android 手机的加速度计数据,并且在成功轮询时它会在警报中显示该对象。这很好用。

但是,我不希望这个轮询代码出现在启动函数中。我想更好地控制何时执行

我有一个模板,我想在其中显示加速度计值。我把上面代码中的onSuccess方法改成了返回对象而不是alerting(其余的启动代码都是一样的):

var onSuccess = function(acceleration){
      return acceleration;
    };

我的模板如下所示:

Template.rawData.helpers({
    acc: function(){
      alert(getAcc);
      return getAcc;
    }
  });

我期望将加速度计数据存储在启动功能中的getAcc 中,然后通过acc 将其返回到我的网页。这似乎不会发生。模板中的alert 也不会出现

有没有办法从启动功能之外访问这些科尔多瓦插件?我只是错误地返回了启动部分和模板部分之间的对象吗?

我想我的另一个首要问题是:如果这些加速度计值是在启动函数中收集的,而不是从模板帮助程序中收集的,我不确定如何通过模板显示这些值

【问题讨论】:

    标签: javascript android meteor callback


    【解决方案1】:

    您需要在数据更改时响应式更新模板。为此,请设置一个由回调更新的reactive variable。首先,安装包:

    meteor add reactive-var
    

    然后,创建模板后,创建反应变量并开始观察回调:

    Template.rawData.onCreated(function() {
       self = this;
       self.rawValue = new ReactiveVar();
       self.accWatchID = navigator.accelerometer.watchAcceleration(
          function(acc) { self.rawValue.set(acc); }, function() {}, { frequency: 3000 }
       );
    });
    

    然后您的模板助手可以返回反应变量的值,并且您的模板将在它更改时更新:

    Template.rawData.helpers({
       acc: function() {
          return Template.instance().rawValue.get();
        }
     });
    

    (请注意,在您的原始代码中,由于没有调用警报,因此您的模板中一定有问题。它的名称是否正确?)

    最后,你应该在模板被销毁时停止回调:

    Template.rawData.onDestroyed(function() {
       navigator.accelerometer.clearWatch(this.accWatchID);
    });
    

    请注意,我只是在此处输入了该代码,而没有对其进行测试。如果它不能立即起作用,您可能需要对其进行微调。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 2023-03-14
      • 2014-11-27
      • 2013-02-18
      • 1970-01-01
      • 2014-04-12
      • 1970-01-01
      相关资源
      最近更新 更多