ObservableArray.push()触发点击事件
ObservableArray.push() triggers click event
我正在制作一个可搜索的对象(学生)列表。当我把对象附加到列表中时,我还想添加点击事件处理程序,它会把对象Id传给我
我制作了一个可观测阵列:
<script>
self.studentList = ko.observableArray();
// (...) if search conditions are met, add student to array
self.studentList.push(singleStudent);
</script>
它是html:
<tbody data-bind="foreach: studentList">
<tr>
<td><span data-bind='text: $data.Name, click: ClickEvent($data.Id)'></span></td>
</tr>
点击时应触发的功能:
<script>
function ClickEvent(pId)
{
console.log(pId);
}
</script>
点击本身工作正常。问题是self.studentList.push(singleStudent)
行也触发了该事件。
如何添加只有在元素被单击时才会触发的事件?
您没有正确连接click
处理程序,因为您没有传入对函数的引用,而是传入了实际执行的结果。
在其当前形式中,ClickEvent
在每次解析绑定时执行,例如在向数组添加新项时。
要修复它,你需要将它包装成一个匿名函数
<td>
<span data-bind='text: $data.Name, click: function() { ClickEvent($data.Id) }'></span>
</td>
或者您可以使用bind
功能:
<td>
<span data-bind='text: $data.Name, click: ClickEvent.bind($data, $data.Id)'></span>
</td>
另请参阅文档中的:访问事件对象,或传递更多参数
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使Javascript动态html表及其上的事件
- 使用类从一个标记中双击事件
- 如何在未直接触发的情况下停止事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 对iPad上的点击事件反应缓慢
- 事件和状态
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- 从控制器返回后Ajax启动事件激发
- 如何从画布上的某个移动事件中获取X和Y
- Jquery:未触发select事件
- JsFiddle上的鼠标事件不起作用
- 只覆盖箭头键滚动事件
- ObservableArray.push()触发点击事件
- 带push事件的实时Rails不工作
- Firebase push不能在value事件中工作