【发布时间】:2023-03-14 20:35:01
【问题描述】:
我正在使用淘汰模板在 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 实现这一目标?
提前致谢。
【问题讨论】:
-
您需要传递对 abc 函数的引用。不是“abc”字符串。
-
有什么特殊的属性可以用来传递引用吗?另外,我将如何在 click 属性中使用它?
-
您没有显示 abc 函数的位置。它是视图模型上的属性吗?
-
@CrimsonChris 这是个好问题! abc 函数是使用 require JS 加载的,是另一个文件(名为 abc)中的定义模块。如何提取使用定义模块定义的函数并将其放入淘汰赛的点击中?
-
您可以
require函数,然后将其作为属性添加到模板的视图模型中。vm.myClick = myRequiredFunction
标签: javascript html knockout.js