搜索
首页web前端js教程表单事件绑定在 KnockoutJs 中如何工作

Como funcionam Bindings de Eventos de Formulário no KnockoutJs

此内容基本上是原始材料的翻译。目的是了解 Magento 2 的 KnockoutJs 并用葡萄牙语创建有关 KnockouJs 的内容。

文档

  • 数据绑定语法
  • 绑定上下文
  • “点击”绑定
  • “事件”绑定
  • “提交”绑定
  • “启用”和“禁用”绑定
  • “值”绑定
  • “textInput”绑定
  • “hasFocus”绑定
  • “已检查”绑定
  • “选项”绑定
  • “selectedOptions”绑定
  • “uniqueName”绑定

绑定

在 KnockoutJs 中,绑定 是连接 ViewModel 逻辑(数据和业务逻辑)与 View (HTML) 的方式。简而言之,正是通过 绑定,用户界面自动反映数据的变化,而不需要直接操作 DOM。

KnockoutJ 中的绑定通过 HTML 元素上的 data-bind 属性进行工作。您可以在该属性中指定要使用的绑定和关联值。

表单事件

点击

绑定 单击添加了一个事件处理程序,以便在单击关联的 DOM 元素时调用所选的 JavaScript 函数。这最常用于标记为

每次单击该元素时,都会调用 ViewModel 中传递的方法,该方法又会更改 ViewModel 的状态,从而导致 UI已更新。

<div>
    You've clicked <span data-bind="text: numberOfClicks"></span> times
    <button data-bind="click: incrementClickCounter">Click me</button>
</div>

<script type="text/javascript">
        ko.applyBindings({
        numberOfClicks : ko.observable(0),
        incrementClickCounter : function() {
            var previousCount = this.numberOfClicks();
            this.numberOfClicks(previousCount + 1);
        }
    });
</script>

默认情况下,KnockoutJs 将阻止 click 事件执行任何标准操作。这意味着当在 标签上使用 绑定 click 时,浏览器将仅调用该函数,而不会导航到链接的 href。当您将链接用作操作 ViewModel 的 UI 的一部分(而不是作为指向另一个网页的普通超链接)时,通常会使用点击绑定。如果标准点击操作需要继续,只需在函数中返回 true 即可。

事件

绑定 事件允许您为指定事件添加事件处理程序,以便在关联 DOM 元素触发该事件时调用您选择的 JavaScript 函数。这可用于绑定任何事件,例如按键、鼠标悬停或鼠标退出。

<div>
    You've clicked <span data-bind="text: numberOfClicks"></span> times
    <button data-bind="click: incrementClickCounter">Click me</button>
</div>

<script type="text/javascript">
        ko.applyBindings({
        numberOfClicks : ko.observable(0),
        incrementClickCounter : function() {
            var previousCount = this.numberOfClicks();
            this.numberOfClicks(previousCount + 1);
        }
    });
</script>

提交

绑定提交 *是表单上的提交绑定指令,将阻止浏览器对该表单的默认提交操作,换句话说,浏览器将调用处理函数,但不会将表单发送到服务器。当表单用作 ViewModel 的接口(而不是普通的 HTML 表单)时,通常会使用 *submit 绑定。如果表单需要作为普通 HTML 表单提交,只需从提交处理程序返回 true 即可。

<div>
    <div data-bind="event: { mouseover: enableDetails, mouseout: disableDetails }">
        Mouse over me
    </div>
    <div data-bind="visible: detailsEnabled">
        Details
    </div>
</div>

<script type="text/javascript">
        ko.applyBindings({
        detailsEnabled: ko.observable(false),
        enableDetails: function() {
            this.detailsEnabled(true);
        },
        disableDetails: function() {
            this.detailsEnabled(false);
        }
    });
</script>

启用/禁用

绑定 enable 会导致关联的 DOM 元素在其参数值为 true 时被启用。 绑定 disable 以相反的方式工作,导致关联的 DOM 元素在其值为 true 时被禁用。


价值

绑定值*绑定与*ViewModel中的属性关联的DOM元素的值。这通常对于

当用户编辑关联表单控件中的值时,ViewModel 中的值将被更新。同样,当 ViewModel 更新值时,这将更新屏幕上表单控件的值。

<p>
    <input type="checkbox" data-bind="checked: hasCellphone">
    I have a cellphone
</p>
<p>
    Your cellphone number:
    <input type="text" data-bind="value: cellphoneNumber, enable: hasCellphone">
</p>

<script type="text/javascript">
        ko.applyBindings({
        hasCellphone : ko.observable(false),
        cellphoneNumber: ""
    });
</script>

绑定值与结合使用。允许读取和写入任意 JavaScript 对象的值,而不仅仅是 string.

文本输入

绑定 textInput 将字段(

<p>Login name: <input data-bind="value: userName"></p>
<p>Password: <input type="password" data-bind="value: userPassword"></p>

<script type="text/javascript">
        ko.applyBindings({
        userName: ko.observable(""),        // Initially blank
        userPassword: ko.observable("abc"), // Prepopulate
    });
</script>

默认情况下,绑定 textInput 仅在用户将焦点从文本框移开时更新其模型。 绑定 textInput 通过每次击键或其他文本输入机制立即更新其模型。

具有焦点

绑定 hasFocus 将 DOM 元素的焦点状态绑定到 ViewModel 属性。这是一种双向连接,当 ViewModel 属性设置为 true 或 false 时,关联元素将获得焦点或不焦点。

<div>
    You've clicked <span data-bind="text: numberOfClicks"></span> times
    <button data-bind="click: incrementClickCounter">Click me</button>
</div>

<script type="text/javascript">
        ko.applyBindings({
        numberOfClicks : ko.observable(0),
        incrementClickCounter : function() {
            var previousCount = this.numberOfClicks();
            this.numberOfClicks(previousCount + 1);
        }
    });
</script>

已检查

选中的绑定绑定一个可勾选的表单控件,即一个复选框()或一个单选按钮(ViewModel.
中的属性

<div>
    <div data-bind="event: { mouseover: enableDetails, mouseout: disableDetails }">
        Mouse over me
    </div>
    <div data-bind="visible: detailsEnabled">
        Details
    </div>
</div>

<script type="text/javascript">
        ko.applyBindings({
        detailsEnabled: ko.observable(false),
        enableDetails: function() {
            this.detailsEnabled(true);
        },
        disableDetails: function() {
            this.detailsEnabled(false);
        }
    });
</script>

选项

绑定选项控制哪些选项应出现在下拉列表()中。此链接不能与

分配的值必须是数组(或Observable Array)。 然后它将为您的数组中的每个项目显示一个项目。


选定的选项

绑定 selectedOptions 控制当前选择多选列表中的哪些元素。它旨在与

当用户选择或取消选择多选列表中的某个项目时,会向 ViewModel 中的数组添加或删除相应的值。同样,假设它是 ViewModel 中的 Observable Array,每当您从该 array 添加或删除项目时,UI 中的相应项目都会被选择或取消选择。这是双向连接。

<p>
    <input type="checkbox" data-bind="checked: hasCellphone">
    I have a cellphone
</p>
<p>
    Your cellphone number:
    <input type="text" data-bind="value: cellphoneNumber, enable: hasCellphone">
</p>

<script type="text/javascript">
        ko.applyBindings({
        hasCellphone : ko.observable(false),
        cellphoneNumber: ""
    });
</script>

唯一名称

绑定 uniqueName 确保绑定的 DOM 元素具有非空名称属性。如果 DOM 元素没有 name 属性,此连接将提供一个并将其设置为某个唯一的字符串值。

<p>Login name: <input data-bind="value: userName"></p>
<p>Password: <input type="password" data-bind="value: userPassword"></p>

<script type="text/javascript">
        ko.applyBindings({
        userName: ko.observable(""),        // Initially blank
        userPassword: ko.observable("abc"), // Prepopulate
    });
</script>

以上是表单事件绑定在 KnockoutJs 中如何工作的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
在JavaScript中替换字符串字符在JavaScript中替换字符串字符Mar 11, 2025 am 12:07 AM

JavaScript字符串替换方法详解及常见问题解答 本文将探讨两种在JavaScript中替换字符串字符的方法:在JavaScript代码内部替换和在网页HTML内部替换。 在JavaScript代码内部替换字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 该方法仅替换第一个匹配项。要替换所有匹配项,需使用正则表达式并添加全局标志g: str = str.replace(/fi

jQuery检查日期是否有效jQuery检查日期是否有效Mar 01, 2025 am 08:51 AM

简单JavaScript函数用于检查日期是否有效。 function isValidDate(s) { var bits = s.split('/'); var d = new Date(bits[2] '/' bits[1] '/' bits[0]); return !!(d && (d.getMonth() 1) == bits[1] && d.getDate() == Number(bits[0])); } //测试 var

jQuery获取元素填充/保证金jQuery获取元素填充/保证金Mar 01, 2025 am 08:53 AM

本文探讨如何使用 jQuery 获取和设置 DOM 元素的内边距和外边距值,特别是元素外边距和内边距的具体位置。虽然可以使用 CSS 设置元素的内边距和外边距,但获取准确的值可能会比较棘手。 // 设置 $("div.header").css("margin","10px"); $("div.header").css("padding","10px"); 你可能会认为这段代码很

10个jQuery手风琴选项卡10个jQuery手风琴选项卡Mar 01, 2025 am 01:34 AM

本文探讨了十个特殊的jQuery选项卡和手风琴。 选项卡和手风琴之间的关键区别在于其内容面板的显示和隐藏方式。让我们深入研究这十个示例。 相关文章:10个jQuery选项卡插件

10值得检查jQuery插件10值得检查jQuery插件Mar 01, 2025 am 01:29 AM

发现十个杰出的jQuery插件,以提升您的网站的活力和视觉吸引力!这个精选的收藏品提供了不同的功能,从图像动画到交互式画廊。让我们探索这些强大的工具: 相关文章: 1

HTTP与节点和HTTP-Console调试HTTP与节点和HTTP-Console调试Mar 01, 2025 am 01:37 AM

HTTP-Console是一个节点模块,可为您提供用于执行HTTP命令的命令行接口。不管您是否针对Web服务器,Web Serv

自定义Google搜索API设置教程自定义Google搜索API设置教程Mar 04, 2025 am 01:06 AM

本教程向您展示了如何将自定义的Google搜索API集成到您的博客或网站中,提供了比标准WordPress主题搜索功能更精致的搜索体验。 令人惊讶的是简单!您将能够将搜索限制为Y

jQuery添加卷轴到DivjQuery添加卷轴到DivMar 01, 2025 am 01:30 AM

当div内容超出容器元素区域时,以下jQuery代码片段可用于添加滚动条。 (无演示,请直接复制到Firebug中) //D = document //W = window //$ = jQuery var contentArea = $(this), wintop = contentArea.scrollTop(), docheight = $(D).height(), winheight = $(W).height(), divheight = $('#c

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具