文章出處
文章列表
對于下拉列表框的綁定在之前的knockoutjs文章中已經介紹過,今天主要說一下級聯的select,事實上,在knockoutjs里,是以數據綁定為中心的,而數據是以面向對象為前提的,而對于級聯綁定來說,它也是一種面向對象里關系對象的體現,有了關系對象,我們就可以把級聯很容易的開發出來,而不用像之前JS那么麻煩了。
準備數據對象
var Grade_Subject_R = function () { var self = this; self.Grades = [ { 'subjects': [{ 'id': '1', 'name': '語文' }, { 'id': '2', 'name': '數學' }, { 'id': '3', 'name': '英語' }], 'arid': '1', 'name': '小學' }, { 'subjects': [{ 'id': '1', 'name': '語文' }, { 'id': '2', 'name': '數學' }, { 'id': '3', 'name': '英語' }, { 'id': '4', 'name': '物理' }, { 'id': '22', 'name': '化學' }, { 'id': '23', 'name': '生物' }], 'arid': '2', 'name': '初中' }, { 'subjects': [{ 'id': '1', 'name': '語文' }, { 'id': '2', 'name': '數學' }, { 'id': '3', 'name': '英語' }, { 'id': '4', 'name': '物理' }, { 'id': '22', 'name': '化學' }, { 'id': '23', 'name': '生物' }, { 'id': '24', 'name': '歷史' }], 'arid': '3', 'name': '高中' } ]; self.grade = ko.observable(); self.subject = ko.observable(); /* 當前選中的年級ID為self.grade().id 當前選中的學科ID為self.subject().id HTML代碼: <select data-bind=" options: Grades, optionsText: 'name', value:grade, optionsCaption: '選擇年級'"> </select> <span data-bind="with:grade"> <select data-bind=" visible: $parent.grade, options: Subjects, optionsText: 'name', value:$parent.subject, optionsCaption: '選擇學科'"> </select> </span> <span data-bind="with:grade"> <!-- ko foreach: Subjects --> <input type="checkbox" data-bind="value: id, checked: $root.subject" /> <span data-bind="text: name"></span> <!-- /ko --> </span> */ }
JS代碼
var model = new Grade_Subject_R(); ko.applyBindings(model); for (var i in model.Grades) { if (model.Grades[i].arid == "2") { model.grade(model.Grades[i]); break; } }
HTML代碼
<select data-bind=" options: Grades, optionsText: 'name', value:grade, optionsCaption: '選擇年級'"> </select> <!-- ko with:grade --> <select data-bind=" visible:$parent.grade, options: subjects, optionsText: 'name', value:$parent.subject, optionsCaption: '選擇學科'"> </select> <!-- /ko -->
效果截圖
文章列表
全站熱搜