2012-02-11 3 views
4

я сделал мое первое приложение knockout.js http://jsfiddle.net/Pqs7e/Knockout.js URL маршрутизации

Для частей приложения дисплей (книги раздел, о разделе) Я использую JQuery $ ("# ID"). Шоу(). Я чувствую, что это неправильный путь. Как я могу это сделать с помощью механизма viewmodel?

ответ

4

Я хотел бы сделать это с особым состояния наблюдаемым, который бы определить, какие ДИВ, чтобы показать:

function ViewModel(){ 
    var self = this; 
    self.state = ko.observable(); 
    ... 
} 

Тогда вы просто связать это следующим образом:

<div id="books" data-bind="visible: state() === 'books'>...</div> 
<div id="about" data-bind="visible: state() === 'about'>...</div> 

и переключаться между состояниями, как это :

this.get('#books', function() { 
    self.state("books"); 
}); 

this.get('#about', function() { 
    self.state("about"); 
}); 
+0

Спасибо вам большое – Tom

4

Альтернативный способ сделать t его это с шаблонами:

<div data-bind="template: state"> 
    Template renders here 
</div> 

Тогда ваши разделы могут быть определены где-то вроде этого (в том же файле или в другом месте):

<script id="books" type="text/html"> 
    Your markup here... 
</script> 

<script id="about" type="text/html"> 
    Your markup here... 
</script>