我正在尝试使用Google地图JSON API实现地理编码。
我为该位置和ObjectController创建了一个模型, 该模型具有异步地理编码逻辑。
我希望控制器观察模型的变化以反映最多的更新数据。
我正在尝试使用绑定和观察,两者都不起作用:
App.Location = Ember.Object.extend({
formatted_address: null,
location: {
lat: null,
lng: null
}
})
App.Location.reopenClass({
geocoded: Ember.Object.create(),
geocode: function(address) {
$.ajax({
url: 'http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=' + address,
dataType: 'json',
context: this,
success: function(response) {
App.Location.geocoded.set('response', response);
}
});
return this.geocoded;
}
});
App.LocationController = Ember.ObjectController.extend({
contentBinding: 'App.Location.geocoded',
testProperty: function() {
console.log('test');
}.property('content'),
testObserve: function() {
console.log('test');
}.observes('App.Location.geocoded')
});
编辑:更改为observes('App.Location.geocoded.response')
解决问题。它还能用于绑定吗?有更好的方法吗?
答案 0 :(得分:1)
当您编写contentBinding: 'App.Location.geocoded'
时,App.Location.geocoded更改时内容会更新。但是在成功处理程序中,您不会更改地理编码对象,而只是更新其响应属性。
因此,如果要保持与地理编码对象的绑定,可以尝试执行
App.Location.set('geocoded', Ember.Object.create({response: response}));
在ajax成功处理程序中。