2016-04-13 41 views
1

Bir url oluşturmak için, bir url oluşturmak için şablonda (Jinja2) {{ url_for('login') }} kullanın ve url'nin login adını (örneğin /auth/login/) ilişkilendirdiği her şeyi döndürür. Bunu Handlebars.js ve Backbone.js'de nasıl yaparım? Zaten uygulandı mı?Backbone.js & Handlebars.js ilgili bir URL oluşturmak için

elde etmek istiyorum Ne: {{#urlfor}}loginRoute{{/urlfor}}
ve bunun için geri dönmek için: /auth/login.

Benim yolları: Bunu yapmak isteyen nedenlerine ilişkin anlam veremiyorum

routes: { 
    '': 'indexRoute', 
    'auth/login': 'loginRoute' 
} 

cevap

0

.

yardımcı yeterince basit olurdu: Bazı değeri tutan bazı Nesne bir anahtarın adını bulup döndürmek için bir Handlebars yardımcı yaratıyor yapıyor olurdu tamamı

Handlebars.registerHelper('urlfor', function (value) { 
    for (var key in routes) { 
     if (routes.hasOwnProperty(key) && routes[key] === value) { 
      return key; 
     } 
    } 
    return null; 
}); 

(Bu arasında varsayar Tabii ki, yardımcı olan sözcük kapsamında routes erişimi) Sen şu şekilde bir şablonda bu yardımcısı kullanmak istiyorsunuz

sahip olduğunu.

<script id="Template" type="text/template"> 
    <p>The URL for loginRoute is {{urlfor 'loginRoute'}}</p> 
</script> 

Ancak buna yardımcı vazgeçmek ve yerine şablon fonksiyonu çalıştırmadan önce bu hesaplama yapmak ve sadece bir parametre olarak değer geçmek daha mantıklı geliyor bana:

template({ loginUrl: getUrlFor('loginRoute') }); 
+0

Teşekkür yanıt için bir çok! FYI, o zaman rotayı değiştirirsem, tüm URL'leri güncellemem gerekmiyor. – user3223010