javascript - 动态改变knockout JS中的点击方法

标签 javascript html knockout.js

我正在使用 knockout 模板来显示 DOM 中的某些 HTML。我的情况是这样的,每次我想要一个与模板中的 div 类似的 div 时,我都会重新使用该模板。但是,每个动态创建的 div 都将具有具有不同单击方法的按钮。该方法的名称将通过模板的 data 属性传递:

<div class="module-container" data-bind="template: { name:'create-template', data:'abc' }">
</div>

模板如下所示:

<tmeplate id="create-template">
   <button class="pagebuttons" data-bind="click: $data"></button>
<!-- More code here -->
</template>

所以理想情况下,单击按钮时必须调用 abc,但这并没有发生(它实际上将 $data 视为方法名称。我尝试转义 $ 符号,但这也不起作用)。我怎样才能通过 knockout 实现这一目标?

提前致谢。

最佳答案

您将上下文( View 模型)作为模板的 data 参数传递给模板。模板内的绑定(bind)基于该上下文。

var vm = {};
vm.myClick = function() {
  alert("Clicked!");
};
vm.myLabel = 'Click me';

ko.applyBindings(vm);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<template id="create-template">
  <button class="pagebuttons" data-bind="click: theClick, text:label"></button>
  <!-- More code here -->
</template>
<div class="module-container" data-bind="template: { name:'create-template', data:{theClick:myClick, label:myLabel} }">
</div>

关于javascript - 动态改变knockout JS中的点击方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32662398/

相关文章:

javascript - 从 Knockout.js 的下拉列表中获取选定的值

javascript - Canvas : not all objects in an array of bouncing ball objects are showing up

javascript - 在 Flask 模板中运行 Ember-Table

javascript - 通过匹配其中的字符串来删除对象

html - Div 未对齐

html - 页面对象覆盖固定导航栏

knockout.js - 为什么我的 Knockoutjs 计算 observable 不起作用?

javascript - 对 Buffer 如何在 Node.js 中编码 Base64 感到困惑

html - 仅在图像悬停时更改按钮的颜色

javascript - 使用 Knockout 将项目添加到列表后更改背景颜色