最近,在项目中需要改之前同事的代码,发现他用了KnockOut,Knockout是一个轻量级的UI类库,通过应用MVVM模式使JavaScript前端UI简单化(如果是正在开发的项目,建议不要使用,技术已经很老了,网上资料少,语法比较复杂,但是如果你想兼容低版本的IE浏览器,这是一个比较好的选择吧。。。)
KnockOut在理解上就和之前的JS控件有不少不同的地方
1)如果你要对模型中的某个属性和视图层进行绑定,必须要使用ko.observable()(或者ko.observableArray()监控数组)来申明一下,然后再视图层通过data-bind来进行绑定。如果你这样做了,你会发现KO会把你自己的属性全都变成函数来进行调用了。例子如下:
<div data-bind="visible: shouldShowMessage">
You will see this message only when "shouldShowMessage" holds a true value.
</div>
<script type="text/javascript">
var viewModel = {
shouldShowMessage: ko.observable(true) // Message initially visible
};
viewModel.shouldShowMessage(false); // ... now it's hidden
viewModel.shouldShowMessage(true); // ... now it's visible again
</script>