2012-02-11 103 views
4

我做了我的第一個knockout.js應用http://jsfiddle.net/Pqs7e/Knockout.js URL路由

對於顯示應用部分(書節,約部分)使用jQuery $( 「#ID」)。節目()。我覺得這是不對的。我如何通過viewmodel的機制來做到這一點?

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> 

和這樣的狀態之間切換

回答

4

我會特別狀態觀察到這將確定要顯示的DIV做:

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

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

非常感謝你 – Tom 2012-02-12 04:43:35

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>