Backbone: рд░рд╛рдЙрдЯрд░.рдиреЗрд╡рд┐рдЧреЗрдЯ рд░рд╛рдЙрдЯрд░ рдХреЛ рддрдм рддрдХ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рдЬрдм рддрдХ рд╣реИрд╢ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рдЕрдХреНрддреВре░ 2011  ┬╖  22рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jashkenas/backbone

рдореИрдВ рд╣реИрд╢рдмреИрдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдпреВрдЖрд░рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕рд╕реЗ рдХреБрдЫ рджреБрдЦ рд╣реЛ рд░рд╣рд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдореИрдВрдиреЗ рдпрд╣ рдХрд┐рдпрд╛ред

<a href="#" onclick="router.navigate('/albums/<%= album.id %>', true); return false;">Show</a>

рдпреВрдЖрд░рдПрд▓ рдЕрдкрдбреЗрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд░рд╛рдЙрдЯрд░ рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдкрд╣рд▓реЗ рддреЛ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдорд╛рд░реНрдЧ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдкреГрд╖реНрда рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдорд╛рд░реНрдЧ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред

рддрдм рдореИрдВрдиреЗ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХреА:

<a href="#" onclick="router.navigate('/albums/<%= album.id %>', true);">Show</a>

рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░рд╛рдЙрдЯрд░ рдХреЛ рдХреЗрд╡рд▓ рддрднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╣реИрд╢рдЪреЗрдВрдЬ рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ router.navigate() рдХрд╛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рднреА рдЪрд▓рд╛рдпрд╛ рд╣реИ рдЬрдм рдПрдХ рдорд╛рд░реНрдЧ рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдореИрдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рдерд╛:

Backbone.history.loadUrl( Backbone.history.fragment )

рдпрд╣ рдПрдкреАрдЖрдИ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ _explictly_ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ router.navigate( 'current/path', true ) рдХреЛ рд░реВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХрд┐рд╕реА рдФрд░ рдХреЛ рдЗрд╕ рдкрд░ рдЭрдВрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдкрд░рд╡рд╛рд╣ рд╣реИ?

рд╕рднреА 22 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЕрдЧрд░ рдореИрдВ inital / рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдБ
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рдорд╛рд░реНрдЧреЛрдВ рд╕реЗ рд╕рдЯреАрдХ рдореЗрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ router.navigate() рдХрд╛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рднреА рдЪрд▓рд╛рдпрд╛ рд╣реИ рдЬрдм рдПрдХ рдорд╛рд░реНрдЧ рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдореИрдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рдерд╛:

Backbone.history.loadUrl( Backbone.history.fragment )

рдпрд╣ рдПрдкреАрдЖрдИ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ _explictly_ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ router.navigate( 'current/path', true ) рдХреЛ рд░реВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХрд┐рд╕реА рдФрд░ рдХреЛ рдЗрд╕ рдкрд░ рдЭрдВрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдкрд░рд╡рд╛рд╣ рд╣реИ?

рдореИрдВ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред рдпрд╣рд╛рдБ рдореЗрд░рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реИ:

рдореИрдВ рд╕рднреА рд╕реНрдХреНрд░реАрди рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░рджрд╛рдпреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореАрдбрд┐рдпрд╛ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдореЗрдВ рдХреБрдЫ рддрддреНрд╡ рд╣реИрдВ рдЬреЛ рдореАрдбрд┐рдпрд╛ рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрддреНрддрд░ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рд░реЛрд╣ рд▓рд┐рдЦрд╛ рдФрд░ рдпрджрд┐ рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рддреЛ рдкреГрд╖реНрда рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ред рд╕рдВрджрд░реНрдн рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдореИрдВ рдмрд╕ рдХреЙрд▓ рдХрд░реВрдВрдЧрд╛

router.navigate(Backbone.history.fragment, true)

рдореБрдЭреЗ рдмреИрдХрдмреЛрди.рдЗрддрд┐рд╣рд╛рд╕ рдХрд╛ рд╕рдВрджрд░реНрдн рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рджреЗрдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд░рд╛рдЙрдЯрд░ рдореЗрдВ рд░рд┐рдлреНрд░реЗрд╢ рдпрд╛ рд░реАрд▓реЛрдб рд╡рд┐рдзрд┐ рд╣реЛ:

router.refresh(true);

рдореЗрд░реА рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереАред @Ansman рдХреНрдпрд╛ рдЖрдк рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдорд╛рд░реНрдЧ рдХреНрдпрд╛ рд╣реИрдВ? рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рд╣реИрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рдкреНрд░рдореБрдЦ рд╕реНрд▓реИрд╢ рдЗрддрд┐рд╣рд╛рд╕ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдЯ рд╣реИред

рд╣рд╛рдВ -- рдЖрдкрдХреЗ рдорд╛рд░реНрдЧреЛрдВ рдореЗрдВ рдпрд╛ рдЖрдкрдХреЗ рдиреЗрд╡рд┐рдЧреЗрдЯ() рдХреЙрд▓ рдореЗрдВ рдХрднреА рднреА рдЕрдЧреНрд░рдгреА рд╕реНрд▓реИрд╢ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдорд╛рд╕реНрдЯрд░ рдкрд░ рдПрдХ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рд╣реИ рдЬреЛ рд╕рднреА рдкреНрд░рдореБрдЦ рд╕реНрд▓реИрд╢ рдХреЛ рдЬрдмрд░рджрд╕реНрддреА рдЫреАрди рд▓реЗрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рд╕реЗ рдЕрдм рдЫреЛрдЯреА рдЧрд╛рдбрд╝реА рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрдВрдд рдореЗрдВ, рд╣рд╛рдБ, рдЖрдкрдХрд╛ рд░рд╛рдЙрдЯрд░ рдХреЗрд╡рд▓ рддрднреА рд╕рдХреНрд░рд┐рдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдорд╛рд░реНрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред

рдореИрдВ рдЗрд╕рдореЗрдВ рдЭрдВрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд░рд╛рдЙрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреНрд╡реЗрд╖рдг рдХреЙрд▓ред рдиреЗрд╡рд┐рдЧреЗрдЯ ("рд░реВрдЯ", рд╕рддреНрдп) рдорд╛рд░реНрдЧ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рднрд▓реЗ рд╣реА рд╣реИрд╢ рдореЗрдВ рдорд╛рд░реНрдЧ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реЛ

@danroberts рдпрджрд┐ рд╣реИрд╢ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ рддреЛ рдорд╛рд░реНрдЧ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдордп рд╕рдВрднрд╡ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рдореИрдВрдиреЗ рд░рд╛рдЙрдЯрд░ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдиреЗрд╡рд┐рдЧреЗрдЯ ("рд░реВрдЯ /", {рдЯреНрд░рд┐рдЧрд░: рдЯреНрд░реВ}); рдФрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ред рдПрдХ рддреНрд╡рд░рд┐рдд рд╣реИрдХ рдмрд╕ router.route_name() рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИред

@olalonde рдореИрдВ рдЕрдЪреНрдЫреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдКрдкрд░ @wookiehangover рдХреА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдЕрднреА рдПрдХ рдХрд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрд╛ рд╣реИ рдЬреЛ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рдорд╛рд░реНрдЧ рдкрд░ рдореИрдВ рдЬрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рд╡рд░реНрддрдорд╛рди рд╣реИрд╢ рдЬреИрд╕рд╛ рд╣реА рд╣реИ, рдФрд░ рдлрд┐рд░ рд░рд╛рдЙрдЯрд░.рдиреЗрд╡рд┐рдЧреЗрдЯ рдпрд╛ history.loadURL рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╕рд░рдгреА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХреБрдЫ рддрд╛рдЬрд╝рд╛ рдХрд░реЗрдВ: рд╕рддреНрдп рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдорд╛рд░реНрдЧ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЯреНрд░рд┐рдЧрд░ рдХреЗ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗред рд╕рд╛рде рд╣реА, рд╢рд╛рдпрдж рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХрд╛ рдПрдХ рдЕрджреНрдпрддрди рдХреНрд░рдо рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ {trigger: true} рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдорд╛рд░реНрдЧ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ ...

рдЗрд╕ рдмрдЧ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдореЗрдВ рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ:

рд░реАрдврд╝ рдХреА рд╣рдбреНрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдорд╛рд░реНрдЧреЛрдВ рдХреА рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдорд╛рд░реНрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИред рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдХрдореА рдЬрд╣рд╛рдВ рд╕реАрдзреЗ рд░реАрдврд╝ рдХреА рд╣рдбреНрдбреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ "рдкреБрдирдГ рд▓реЛрдб" рдареАрдХ рд╣реИ, рд╣рдореЗрдВ рдЗрд╕ рдЖрд╢рдп рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

        if (url == window.location.pathname + window.location.search) {
            Backbone.history.loadUrl(url);
            return false;
        }
        else if (app.router.isHandled(url)) {
            Backbone.history.navigate(url, {
                trigger: true
            });
            return false;
        }

рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИрдВ? рд╣рд╛рдБ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реИрдз рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдордВрдЪ рдореЗрдВ рд░рдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдПрдлрд╡рд╛рдИрдЖрдИ рдореИрдВрдиреЗ рдЗрд╕ рдзрд╛рдЧреЗ рд╕реЗ рдкрд╣рд▓реЗ # 1214 рджреЗрдЦрд╛ рдФрд░ рдЙрд╕реА рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ред

рдмреИрдХрдмреЛрди рд░рд╛рдЙрдЯрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рд░реВрдЯ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреВрдЖрд░рдПрд▓ рдкрд░рд┐рд╡рд░реНрддрди рдШрдЯрдирд╛ рдХреЛ рд╕реБрдирддрд╛ рд╣реИред

рдЖрдкрдХреЛ рдЙрд╕ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рд░реЛрдХрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд░рд╛рдЙрдЯрд░ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдПрдХ рдЬреЗрдПрд╕рдлрд╝рд┐рд▓реНрдб рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рд╣реИ:
http://goo.gl/wPulo

рдФрд░ рдпрд╣рд╛рдВ рдПрдХ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ:
http://goo.gl/mJM2i

рдЖрдЬ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ рдФрд░ рдмрд╕ рдЕрдкрдиреЗ 2 рд╕реЗрдВрдЯ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛:

рдЧреИрд░-рд╕рд╣рдЬ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ trigger: true рдпрд╣ рдИрд╡реЗрдВрдЯ рдХреЛ рддрдм рддрдХ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рд╣реИрд╢ рдмрджрд▓ рди рдЬрд╛рдПред

рдореЗрд░рд╛ рд╡реЛрдЯ trigger: true рдкрдХреНрд╖ рдореЗрдВ рд╣реИ рдЬреЛ рдорд╛рд░реНрдЧ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ рдЪрд╛рд╣реЗ рдХреЛрдИ рднреА рд╕реНрдерд┐рддрд┐ рд╣реЛред

рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ trigger: true рдХреЗ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред

рдХреЗрдирдкрд░реНрдХрд┐рдиреНрд╕ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП +1 рдпрд╛ рдмреАрдмреА рд░рд╛рдЙрдЯрд░ рдореЗрдВ рдПрдХреАрдХреГрдд рд╣реЛрдиреЗ рдХреЗ рд╕рдорд╛рди рдХреБрдЫред

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП +1 рдЙрд╕реА рдкреГрд╖реНрда рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░реЗрдВ рдпрджрд┐ {trigger: true} рдкрд╛рд╕ рд╣реЛ рдЧрдпрд╛ рд╣реИ

рдореИрдВрдиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ 3 рдШрдВрдЯреЗ рдмрд┐рддрд╛рдП рд╣реИрдВ рдХрд┐ рдореЗрд░реЗ рдЖрд╡реЗрджрди рдкрд░ roter.navigate() рдкрджреНрдзрддрд┐ рдиреЗ рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдмреАрдмреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдореЗрд░рд╛ рдмрджрд╕реВрд░рдд рд▓реЗрдХрд┐рди рддреНрд╡рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реЗ рдкрд╣рд▓реЗ router.navigate() рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдерд╛ред

router.navigate();
router.navigate("app", true);

рдЕрднреА рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреЛрдИ refresh:true рд╡рд┐рдХрд▓реНрдк рд╣реЛрддрд╛, рддреЛ рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛...

рдмрд╕ рдЗрд╕ рдкрд░ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░ рдЫреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдРрд╕рд╛ рдореБрджреНрджрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ {trigger: true} рд╡рд┐рдХрд▓реНрдк рд╣реИрд╢ рдХреЛ рд░рд╛рдЙрдЯрд░.рдиреЗрд╡рд┐рдЧреЗрдЯ рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдорд╛рд░реНрдЧ рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдПрдХ refresh:true рд╡рд┐рдХрд▓реНрдк рдЬреИрд╕реЗ @onuradsay рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ, рдХреЛ

+1 @patrickod рдФрд░ @onuradsay рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреА рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХрддрд╛ рдХреЗ рд▓рд┐рдП

+1ред рд╣рдореЗрдВ рдЕрднреА рднреА рдИрд╡реЗрдВрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдлрд┐рд░ рд╣рдорд╛рд░реЗ рдРрдк рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд░реАрдлреНрд░реЗрд╢ рдХреЗ рд▓рд┐рдП рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдо рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рдХрдИ рд╣реИрдХреНрд╕ рд╕реЗ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рд╕рд╛рдл рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рд░рд╛рдЙрдЯрд░ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИред

рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ _remove_ trigger:true рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рдШрдЯрдирд╛ рдХреЛ рдмрд┐рдирд╛ рд╢рд░реНрдд рдЖрдЧ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдкреНрд░реЛрддреНрд╕рд╛рд╣рди рд╣реИред рдореБрдЭреЗ рд╕рдордЭрд╛рдиреЗ рджреЛ:

рдЬрдм рд░рд╛рдЬреНрдп рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдмреИрдХрдмреЛрди рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЕрдзрд┐рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ рдореЙрдбрд▓ рдореЗрдВ, рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

model.set({title: "Boom"})
model.set({title: "Boom"})

... рджреВрд╕рд░реА рдмрд╛рд░ рдХрд┐рд╕реА рдИрд╡реЗрдВрдЯ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рднреА рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рдмрджрд▓реА рдЧрдИ рд╣реИ ... рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЬрд╣рд╛рдВ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реИрдВ, рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди _not_ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рдИрд╡реЗрдВрдЯ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рднреА рдХреЛрдИ рдмрдЯрди рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рдП рддреЛ рдХреЙрд▓рдмреИрдХ рдЖрдЧ рд▓рдЧ рдЬрд╛рдП - рдмрд╕ рдХреЙрд▓рдмреИрдХ рдЬреЛрдбрд╝реЗрдВред рдпрд╛ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрдХрдмреЛрди рдХреА рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдмрд╕ рдХреЙрд▓ рдХрд░реЗрдВ object.trigger("myEvent")

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ trigger:true рдмрдЬрд╛рдп рдЗрд╕реЗ рд╕рдЪ рдорд╛рди рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ silent:false рд╡рд┐рдХрд▓реНрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрдЧрд░ рд╣рдо рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╣рдореЗрд╢рд╛ рд╣рдорд╛рд░реЗ рдмрдЯрди рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ -

if (Backbone.history.fragment === 'foo') {
    Backbone.history.loadUrl(Backbone.history.fragment);
 } else {
     router.navigate('foo', {'trigger': true});
}

рдмрдврд╝рд┐рдпрд╛ рдЪрд╛рд▓ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @dankantor !

рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рдЙрдкрдпреЛрдЧ рдХреЗрд╕ рдХрд░рдирд╛ рд╣реИ (рдЙрд╕реА рдкреГрд╖реНрда/рд╣реИрд╢ рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП), рддреЛ рдХреНрдпрд╛ рдЖрдк history.fragment рдХреЗ рдмрдЬрд╛рдп Backbone.history.getFragment() рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рддрд╛рдХрд┐ рдЖрдк рдЗрддрд┐рд╣рд╛рд╕ рдХреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рддрдХ рди рдкрд╣реБрдВрдЪреЗрдВ? рдХреНрд▓реАрдирд░ рд▓рдЧрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ Backbone.history.refresh рд╡рд┐рдзрд┐ рдмрдирд╛рдИред рдлрд┐рд░, рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдореИрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдиреЗрд╡рд┐рдЧреЗрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реВрдВ, рднрд▓реЗ рд╣реА рд╣реИрд╢ рдмрджрд▓ рдЧрдпрд╛ рд╣реЛ:

      _.extend(Backbone.History.prototype, {
            refresh: function() {
                this.loadUrl(this.fragment);
            }
        });

        var routeStripper = /^[#\/]/;
        var origNavigate = Backbone.History.prototype.navigate;
        Backbone.History.prototype.navigate = function (fragment, options) {
            var frag = (fragment || '').replace(routeStripper, '');
            if (this.fragment == frag)
                this.refresh();
            else
                origNavigate.call(this, fragment, options);
        };
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

g00fy- picture g00fy-  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

etler picture etler  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

omenking picture omenking  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

chaimpeck picture chaimpeck  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

cueedee picture cueedee  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ