2011-07-29 3 views
1

У меня недостаточно опыта разработки javascript и jQuery, поэтому мне было интересно, может ли кто-нибудь сказать мне, как создать функцию, использующую шаблоны sammy.js и HTML.Как загрузить файл html в соответствии с маршрутом в sammy js?

Это рабочий код я прямо сейчас:

<script> 
    ;(function($) { 

     var app = $.sammy(function() { 

     this.get('#/', function() { $('#content').text(''); }); 

     this.get('#/home', function() { $('#content').load('main.html'); }); 

     }); 

     $(function() { app.run() }); 

    })(jQuery); 

</script> 

Этот код помещает содержимое main.html «сек, когда я иду или нажмите на ...html#/home, но я ищу для яваскрипта функции, просто цифры из конечную точку URL (слово после ..#/) и получает страницу html с тем же именем.

В pseudo-code:

if(somethingWasClicked and uses sammy.js) 
    loadContent(); 

function loadContent() { 
    endpoint = figureOutEndPoint(); 
    $('#content').load(endpoint.html); 
} 

Спасибо за помощь

ответ

8

Вам просто нужно route with a parameter в нем:

this.get('#/:page', function() { 
    $('#content').load(this.params['page'] + '.html'); 
}); 

Убедитесь, что это после того, как ваши другие маршруты или он будет вызываться для почти все (например, #/home, которые вы уже обрабатываете).

Вы можете, конечно, поставить другие параметры маршрутов:

this.get('#/:where/:is/:pancakes/:house', function() { 
    // Do things with this.params['where'], this.params['is'], 
    // this.params['pancakes'], and this.params['house']. 
}); 

Вам просто нужно, чтобы убедиться, что вы получите правильный порядок или маршруты могут сражаться друг с другом. Маршруты сопоставляются в том же порядке, в котором они добавлены, поэтому общие общие маршруты обычно идут снизу.

+0

спасибо большое! это делает! – Kartik

+0

@Kartik: Не могу допустить, чтобы у вас было плохое время с Sammy.js, это одна из моих любимых библиотек JavaScript :) –

+0

привет, по какой-то причине, когда я прямо перехожу на '... html/# info' где info isnt на странице по умолчанию .. он, похоже, не загружает info.html, если я специально не нажимаю ссылку на странице на страницу '#/info'. Это должно произойти? Не поддерживает ли sammy.js эту ссылку? – Kartik