我做了我的第一个knockout.js申请http://jsfiddle.net/Pqs7e/
对于显示应用程序部分(书籍部分,关于部分)我使用jquery $(“#id”)。show()。我觉得这不是正确的方法。我怎么能通过viewmodel的机制来做到这一点?
答案 0 :(得分:4)
我会使用特殊的 state observable来识别哪个div显示:
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");
});
答案 1 :(得分:4)
另一种方法是使用模板:
<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>