地理位置情報モデルを作成し、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 / 逆 Geolocation ルックアップのフェッチの詳細を削除しました。geolocation:done
しかし、すべての作業の最終結果は、イベントのトリガーに要約されます。
class App.GeolocationView extends Backbone.View
initialize: =>
@listenTo @model, 'geolocation:done', =>
alert('geolocation:done was heard in the view!!!!')
問題は次のとおりです。
地理位置情報モデルが localStorage から取得し、プロパティlatitude
が設定されていないと判断したシナリオでは、呼び出しますget_users_geolocation
— View alerts geolocation:done がビューで聞こえました!!!!
geolocation:done
しかし、地理位置情報に緯度プロパティ (その他) があり、すぐにトリガーされるシナリオでは、ビューは何も警告しません。ビューはそれを聞きません。
私はこれをconsole.loggedしましたが、フローパスが機能していると言えます。if/else が機能しており、View が正しくインスタンス化されています。localStorage からフェッチした後にコールバック内でログを記録すると、これが得られます。
@fetch().always =>
console.log @get('current_city_state')
console.log typeof @get('current_city_state')
// Norfolk, VA
// String
だから、そこにデータがあります..
何が起こっている??助けてください!!