knockoutjs十五 template template 是很重要的一个用法,last but not least,他使我们的代码更加的简洁,我们在写代码的时候,经常会遇到很多的重复代码,我们总是重复的写,浪费事件也不容易维护,那么我们就做成膜版,多用于循环之类的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 <div class ="container" > <div class ="row" > <ul data-bind ='template: { name: displayMode, foreach: employees ,as:"employee"}' > </ul > </div > <script type ="text/html" id ="active" > <a data-bind="text:employee.name" class ="active btn btn-success" ></a> <span data-bind ="text:employee.active" > </span > </script > <script type ="text/html" id ="inactive" > <a data-bind="text:employee.name" class ="disabled btn btn-default" ></a> <span data-bind ="text:employee.active" > </span > </script > </div > <script > function Model () { var self = this ; self.employees = ko.observableArray([{ name: "Kari" , active: ko.observable(true ) }, { name: "Brynn" , active: ko.observable(false ) }, { name: "Nora" , active: ko.observable(false ) }]); self.displayMode = function (employee) { return employee.active() ? "active" : "inactive" ; }; } var model = new Model(); ko.applyBindings(model); </script >
上面的一个例子是我抄的官网的一个例子,他可以实现了动态的切换模板,其实就是动态的切换name而已。
参数name 是你想引用的模板的id
参数nodes 可以直接传入一个dom的数组直接作为模板,但是我觉得这么什么价值,既然使用了模板就是为了提取出来,我感觉官方这个设计多此一举
参数data就是你要放模板数据
参数if 只有当为true或者是true like的值的时候模板才会渲染。
参数foreach 这是我们用来做循环的,和foreach的用法一致,
参数as 当使用佛reach的时候,我们申明一个依赖
参数afterRender, afterAdd, or beforeRemove 这是几个回调方法,有一个参数elements ,代表的时刚刚渲染的dom节点的数组 ko还支持使用别的template模板,比如 Underscore.js 的模板引擎,可以自行学习。
基本所有经常使用的知识我都介绍了,这个系列也算是完结了,还有一些高级的应用我也没有接触过,所以这个系列就暂时到此结束,maybe someday i will be back。谢谢大家的支持,这个系列将会在github pages维护。有误请联系我qq1357197829,我准备过一段时间把这个系列搬到github pages上了,到时候希望大家赏脸。代码托管在https://github.com/lushunming/knockoutJSDemo.git可以直接克隆。