我正在创建一个地理定位模型,从 localStorage 中获取,并检查那里是否有纬度属性。如果没有,'geolocation:city_state_blank'
则触发事件。如果'geolocation:city_state_blank'
被听到,@get_users_geolocation()
就会被解雇。
class App.GeoLocation extends Backbone.Model
initialize: ->
@on 'geolocation:city_state_blank', -> @get_users_geolocation()
@fetch().always =>
if @get('city_state').length is 0
@trigger 'geolocation:city_state_blank'
else
@trigger('geolocation:done')
get_users_geolocation: =>
# Code to get / save (in localStorage) a users geolocation and city / state
@trigger('geolocation:done')
完成后触发get_users_geolocation()
事件。geolocation:done
我删除了获取用户 geoLocation / reverse Geolocation 查找的详细信息,这些都是异步的。但所有这些工作的最终结果归结为触发geolocation:done
事件。
class App.GeolocationView extends Backbone.View
initialize: =>
@listenTo @model, 'geolocation:done', =>
alert('geolocation:done was heard in the view!!!!')
这是问题所在:
在 Geolocation 模型从 localStorage 获取并确定属性未设置并因此调用的场景中latitude
-视图警报get_users_geolocation
geolocation:done 在视图中听到!!!
但是在 Geolocation 具有纬度属性(else)并geolocation:done
立即触发的情况下,视图不会发出任何警报。视图没有听到它。
我已经 console.logged 了,并且可以说流动路径正在工作。if/else 正在工作并且视图正在正确实例化。从 localStorage 获取后在回调中记录会产生这个..
@fetch().always =>
console.log @get('current_city_state')
console.log typeof @get('current_city_state')
// Norfolk, VA
// String
所以,那里有数据..
到底是怎么回事??请帮忙!!