2012-02-11 127 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>