我有这个帮助器,它调用google api函数(getDistance)异步返回它,所以为了帮助它未定义。 如何在结果到达时更新帮助程序?
感谢。
distanceIs: function (destination){
var origin = Session.get('userLatLng');
var isDistance = Blaze._globalHelpers.getDistance(origin, [destination[0], destination[1]] );
return isDistance;
}
答案 0 :(得分:1)
尝试使用已更新的反应变量。
Template.map.onCreated(function () {
this._distance = new ReactiveVar(0);
});
Template.map.helpers({
distanceTo() {
const origin = Session.get('userLatLng');
someAsynchronousFunction(origin, (err, res) => this._distance.set(res));
}
getDistance() {
return this._distance.get();
}
});
答案 1 :(得分:1)
而不是像这样:
<template name="map">
{{#each getDestinations}}
{{distanceIs this}}
{{/each}}
</template>
将其更改为:
<template name="map">
{{#each getDestinations}}
{{> distance}}
{{/each}}
</template>
<template name="distance">
{{getDistance}}
</template>
Template.distance.onCreated(function(){
this.distance = new ReactiveVar(0)
var self = this
googleAPI.getDistance("Point A", "PointB", funciton(result){
self.distance.set(result.distance)
})
})
Template.distance.helpers({
getDistance: function(){
return Template.instance().distance.get()
}
})
注意:要使用ReactiveVar
,您必须添加reactive-var
包。