knockout.js - Knockout.js 在数据绑定中找不到函数
问题描述
我有一个带有按钮的 Magento2 模板:
<button data-bind="attr: {
id: 'update-cart-item-'+item_id,
'data-cart-item': item_id,
click: incrementClickCounter,
title: $t('Update')
}"
class="update-cart-item"
style="display: none">
<span data-bind="i18n: 'Update'"></span>
</button>
我在这里添加的部分是
点击:incrementClickCounter
在我的html页面上方的脚本标签中
<script>
require(["jquery","ko"], function ($) {
var viewModel = {
numberOfClicks : ko.observable(0),
incrementClickCounter : function() {
var previousCount = this.numberOfClicks();
this.numberOfClicks(previousCount + 1);
console.log(this.numberOfClicks);
}
};
});
</script>
但我得到了错误
消息:incrementClickCounter 未定义
解决方案
我实际上能够将 jquery 注入到绑定中,如下所示:
<button afterRender="function (target, viewModel) {
console.log('Rendered element:', target);
console.log('Associated view model:', viewModel);
console.log(this === viewModel);
jQuery(target).click(function() {
alert( 'Handler for .click() called.');
});
}"
但是感觉很脏
推荐阅读
- flutter - 如何检测用户何时在flutter inappwebview中导航到新屏幕
- c# - 如何使用 C# 分割多层 TIFF 图像?
- unity3d - 在 Unity 编辑器中查看或设置场景相机
- sql-server - SQL Server - 通过存储过程中的一些相等字段获取
- angularjs - 关于AngularJS中模型更新的问题
- mysql - SQL中不同类别的不同列
- ios - 当表格视图内容偏移以避免可见键盘时,UITableView.indexPathsForVisibleRows 未返回正确的值
- git - 将代码从一个分支添加到另一个分支时,Git cherry-pick 命令不起作用
- snmp - Net-SNMP snmptrap 不发送 EngineBoots
- google-sheets - 查询等于单元格范围的位置