Ana*_*isy 6 javascript jquery knockout.js
下面是包含折叠面板的表的代码.该click事件处理函数抛出的错误消息"m.apply不是一个函数".
Quux.CollapseExpandCustom.ToggleSection('+id+') 是接受动态id的函数.
请让我知道我犯的错误.我需要绑定click代码中提到的事件.
<table id="EditFooList">
<thead>
<tr>
<th>User</th>
<th>Started Date</th>
<th>Foo</th>
<th>Action</th>
</tr>
</thead>
<tbody data-bind="foreach: EditedDataArray">
<tr>
<td data-bind="text: $data.UserName"></td>
<td data-bind="text: $data.TimeStampString"></td>
<td>
<div>
<p data-bind="text: $data.Title, click: $root+'.'+'Quux.CollapseExpandCustom.ToggleSection('+$data.Baz+')'">Foos<img src="~/Images/Collapse.png" /></p>
<div>
<div data-bind="attr:{id: $data.Baz}">
<ul data-bind="foreach: $data.FooDetailViewModels">
<li>
<input type="button" data-bind="value: 'Resume - ' + $data.TimeDate,click: $root.ClickResume , attr:{fooStudyId:$data.FooStudyId}" />
<input type="button" data-bind="value: 'Plan - ' +$data.TimeDate, click: $root.ClickPlan , attr:{fooStudyId:$data.FooStudyId}" />
</li>
</ul>
</div>
</div>
</div>
</td>
<td>
<input type="button"value="New" data-bind="attr:{id: $data.Baz} , click: $root.FooCLick"/>
</td>
</tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
这个答案可能有所帮助:Knockout点击绑定奇怪的行为
基本上,如果你将它包装在一个匿名函数中,它应该停止错误:
<p data-bind="text: $data.Title, click: function() { $root.Quux.CollapseExpandCustom.ToggleSection($data.Baz); }">Foos<img src="~/Images/Collapse.png" /></p>
Run Code Online (Sandbox Code Playgroud)
但是,如@Nathan Fisher所述,您最好在viewmodel中创建一个处理此过程的函数.
另外,我不确定你为什么要通过调用函数来构建一个字符串.即.
click: $root.Quux.CollapseExpandCustom.ToggleSection($data.Baz)
Run Code Online (Sandbox Code Playgroud)
代替
click: $root+'.'+'Quux.CollapseExpandCustom.ToggleSection('+$data.Baz+')'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6150 次 |
| 最近记录: |