在knockoutJS中嵌套的foreach绑定(Nested foreach binding in knockoutJS)
我想通过敲击JS foreach绑定在AJAX数据的帮助下创建手风琴。 每个Accordion组都包含一个表,当在敲击JS点击绑定的帮助下点击特定的手风琴时,该表的数据应该通过另一个AJAX调用获取。
我面临的问题:
第一个foreach绑定工作正常,没有任何问题,它根据返回的数据创建确切数量的手风琴组。 手风琴上的Click绑定也很有效,并通过AJAX调用获得正确的数据。
然而,当我为每个绑定添加第二个时刻时,一切都崩溃了。 即使是在第一个手风琴组之后,foreach绑定也会停止渲染。
HTML:
<div class="accordion" id="accordion" data-bind="foreach: years"> <div class="accordion-group"> <div class="accordion-heading"> <a class="accordion-toggle" data-parent="#accordion" data-toggle="collapse" href="" data-bind="click: $parent.get_statement, attr: { href: '#' + year0,}, text: year2 + ' ' + year0 + ' - ' + year1">Financial Year 2014-15</a> </div> <div class="accordion-body collapse" id="" data-bind="attr: {id: year0}"> <div class="accordion-inner"> <table class="table"> <thead> <tr> <th>Column A</th> <th>Column B</th> <th>Column C</th> <th>Column D</th> <th>Column E</th> <th>Column F</th> </tr> </thead> <tbody data-bind="foreach: statements"> <tr> <td data-bind="text: A">cell is row 0, column 0</td> <td data-bind="text: B">cell is row 0, column 1</td> <td data-bind="text: C">cell is row 0, column 2</td> <td data-bind="text: D">cell is row 0, column 3</td> <td data-bind="text: E">cell is row 0, column 4</td> <td data-bind="text: F">cell is row 0, column 5</td> </tr> </tbody> </table> </div> </div> </div> </div>
JS代码:
this.years = ko.observableArray(); this.statements = ko.observableArray(); $.ajax({ url: "site_api/user_data.php", type: "get", data: {data_type: getParam("id"), request_type: "account_statement_years", data_value: 0}, cache: false, success: function(result) { var data = $.parseJSON(result); self.years(data); } }); this.get_statement = function() { var c = self.years.indexOf(this); $.ajax({ url: "site_api/user_data.php", type: "get", data: {data_type: getParam("id"), request_type: "account_statement_data", data_value: self.years()[c].year0}, cache: false, success: function(result) { var data = $.parseJSON(result); self.statements(data); } }); };
样本数据:
Years: [{year0: 2015, year2:16, year3: ABC},{year0: 2014, year2:15, year3: DEF},{year0: 2013, year2:14, year3: GHI}]
声明:
[{"A":"AQA", "B":"BQB", "C":"CQC", "D":"DQD", "E":"EQE", "F":"FQF"}, {"A":"AQA", "B":"BQB", "C":"CQC", "D":"DQD", "E":"EQE", "F":"FQF"}, {"A":"AQA", "B":"BQB", "C":"CQC", "D":"DQD", "E":"EQE", "F":"FQF"}]
I want to create accordions with the help of AJAX data through knockout JS foreach binding. Each Accordion group includes a table whose data is supposed to be fetched through another AJAX call when the particular accordion is clicked with the help of knockout JS click binding.
Issue that i am facing:
First foreach binding works well without any issues and it creates the exact number of accordion groups as per the data returned. Click binding on accordion also works well and gets correct data through AJAX call.
However, the moment i add the second for each binding everything falls apart. Even the years foreach binding stops rendering after the first accordion group.
HTML:
<div class="accordion" id="accordion" data-bind="foreach: years"> <div class="accordion-group"> <div class="accordion-heading"> <a class="accordion-toggle" data-parent="#accordion" data-toggle="collapse" href="" data-bind="click: $parent.get_statement, attr: { href: '#' + year0,}, text: year2 + ' ' + year0 + ' - ' + year1">Financial Year 2014-15</a> </div> <div class="accordion-body collapse" id="" data-bind="attr: {id: year0}"> <div class="accordion-inner"> <table class="table"> <thead> <tr> <th>Column A</th> <th>Column B</th> <th>Column C</th> <th>Column D</th> <th>Column E</th> <th>Column F</th> </tr> </thead> <tbody data-bind="foreach: statements"> <tr> <td data-bind="text: A">cell is row 0, column 0</td> <td data-bind="text: B">cell is row 0, column 1</td> <td data-bind="text: C">cell is row 0, column 2</td> <td data-bind="text: D">cell is row 0, column 3</td> <td data-bind="text: E">cell is row 0, column 4</td> <td data-bind="text: F">cell is row 0, column 5</td> </tr> </tbody> </table> </div> </div> </div> </div>
JS Code:
this.years = ko.observableArray(); this.statements = ko.observableArray(); $.ajax({ url: "site_api/user_data.php", type: "get", data: {data_type: getParam("id"), request_type: "account_statement_years", data_value: 0}, cache: false, success: function(result) { var data = $.parseJSON(result); self.years(data); } }); this.get_statement = function() { var c = self.years.indexOf(this); $.ajax({ url: "site_api/user_data.php", type: "get", data: {data_type: getParam("id"), request_type: "account_statement_data", data_value: self.years()[c].year0}, cache: false, success: function(result) { var data = $.parseJSON(result); self.statements(data); } }); };
Sample Data:
Years: [{year0: 2015, year2:16, year3: ABC},{year0: 2014, year2:15, year3: DEF},{year0: 2013, year2:14, year3: GHI}]
Statements:
[{"A":"AQA", "B":"BQB", "C":"CQC", "D":"DQD", "E":"EQE", "F":"FQF"}, {"A":"AQA", "B":"BQB", "C":"CQC", "D":"DQD", "E":"EQE", "F":"FQF"}, {"A":"AQA", "B":"BQB", "C":"CQC", "D":"DQD", "E":"EQE", "F":"FQF"}]
原文:https://stackoverflow.com/questions/31254763
相关文章
更多JSTL详解之c:forEach
There is already an open DataReader associated with this Connection which must be closed first
ExtJS3.2,在FormPanel中嵌套TabPanel和GridPanel后无法正常显示
JavaFx Main中怎么绑定Java类中的一个static变量呢?
怎么递归json嵌套json?
spring 嵌套事务 的 加锁 问题
spring mvc 页面传值到controller
Hadoop pig进阶语法
关于一个页面多个form问题????????
最新问答
更多获取MVC 4使用的DisplayMode后缀(Get the DisplayMode Suffix being used by MVC 4)
如何通过引用返回对象?(How is returning an object by reference possible?)
矩阵如何存储在内存中?(How are matrices stored in memory?)
每个请求的Java新会话?(Java New Session For Each Request?)
css:浮动div中重叠的标题h1(css: overlapping headlines h1 in floated divs)
无论图像如何,Caffe预测同一类(Caffe predicts same class regardless of image)
xcode语法颜色编码解释?(xcode syntax color coding explained?)
在Access 2010 Runtime中使用Office 2000校对工具(Use Office 2000 proofing tools in Access 2010 Runtime)
从单独的Web主机将图像传输到服务器上(Getting images onto server from separate web host)
从旧版本复制文件并保留它们(旧/新版本)(Copy a file from old revision and keep both of them (old / new revision))
Copyright ©2023 peixunduo.com All Rights Reserved.粤ICP备14003112号
本站部分内容来源于互联网,仅供学习和参考使用,请莫用于商业用途。如有侵犯你的版权,请联系我们(neng862121861#163.com),本站将尽快处理。谢谢合作!