我正在构建一个使用 HTML5 地理位置找到用户位置的应用程序。一旦他们的位置被检索到,他们的位置就会被绘制在地图上(父路线)。然后,他们可以选择查看在该位置(子路线)周围发布的推文列表。
因此,我需要将在父路由(存储在控制器上)检索到的坐标传递给子路由,以便正确查询 Twitter API。但是,我不确定如何做到这一点,或者即使我选择了最好的方法。
这是索引控制器:
App.IndexController = Ember.ObjectController.extend({
coords: false,
getGeoLocation: function() {
if (navigator.geolocation) {
this.set('retrieving', true);
navigator.geolocation.getCurrentPosition(
this.locationRetrieved.bind(this),
this.locationFailed.bind(this),
{
timeout: 20000
}
);
} else {
this.set('geolocation', false);
}
},
locationRetrieved: function(position) {
this.set('coords', position.coords);
this.get('target').transitionTo('what-do-you-want-to-know');
}
});
WhatDoYouWantToKnow 控制器“需要”索引控制器:
App.WhatDoYouWantToKnowController = Ember.ObjectController.extend({
needs: 'index',
createMap: function() {
var coords = this.get('controllers.index').get('coords');
var pyrmont = new google.maps.LatLng(coords.latitude, coords.longitude);
var map = new google.maps.Map(document.getElementById('map'), {
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: pyrmont,
zoom: 8
});
var marker = new google.maps.Marker({
map: map,
position: pyrmont
});
}
});
这条路线有一个模板链接到“/what-do-you-want-to-know/tweets”路线:
<p>Your location:</p>
<div id="map"></div>
<ul>
<li>{{#linkTo 'tweets'}}Tweets{{/linkTo}}</li>
</ul>
然后我需要将这些坐标传递到子路由:
App.TweetsRoute = Ember.Route.extend({
model: function() {
return App.Tweet.find({coords:});
}
});
我正在使用 Ember Data 的基本适配器。