私はすべて独自の緯度/経度プロパティを持つ会場オブジェクトのコレクションを持っています。これとユーザーの位置を使用して、ユーザーと各会場の間の距離を計算できます。
私の問題は、Venueオブジェクトが作成されたときにのみこれを実行できないため、位置変数を監視するか関数をトリガーすることによって、位置変数が更新されたときにこの計算をトリガーする必要があることです。どちらの方法でも。
window.App = {};
// Venue Object
App.Venue = Backbone.Model.extend({
urlRoot: '/rest/venue',
defaults: {
distance: ''
},
initialize: function(){
console.log(App.position);
this.set('distance', getDistance(App.position.coords.latitude, App.position.coords.longitude, this.get('latitude'), this.get('longitude')));
},
events: {
// Doesn't seem to work
App.position.on('change', function() { console.log('change event'); })
},
updateDistance: function() {
console.log('updateDistance');
}
});
// Venues Collection Object
App.Venues = Backbone.Collection.extend({
url: '/rest/venues',
model: App.Venue,
comparator: function(venue) {
return venue.get('name');
}
});
$(document).ready(function(){
// Setup Model
App.venues = new App.Venues();
App.venues.fetch();
navigator.geolocation.watchPosition(gotPosition);
function gotPosition(position) {
console.log(position);
App.position = position;
// Somehow trigger updateDistance function on all model objects?
}
});
ここでの正しいアプローチは何ですか?