gpt4 book ai didi

javascript - ViewModel 上的 Knockoutjs 绑定(bind)输入

转载 作者:行者123 更新时间:2023-11-30 19:10:31 25 4
gpt4 key购买 nike

我有一个名为 CreateVM 的 knockout.js ViewModel 包含其他 ViewModel - FrmAddGoodsVM。问题是当我将一些输入绑定(bind)到 FrmAddGoodsVM 时,输入将显示 [object HTMLInputElement]。有人可以告诉我我错过了什么吗?

我已将这些输入绑定(bind)从 FrmAddGoodsVM 放入 CreateVM,并且运行良好。但是我想从 FrmAddGoodsVM 绑定(bind)它们,不知道为什么它不起作用。

索引.js

function FrmAddGoodsVM() {
let self = this;
self.frmName = ko.observable(null);
self.frmAddress = ko.observable(null);
}

function CreateVM() {
let self = this;
...
self.FrmAddGoodsVM = new FrmAddGoodsVM();
}

$(document).ready(function() {
let createVM = new CreateVM();
ko.applyBindings(createVM, document.getElementById('create'))
})

index.html

<form role="form">
<input id="frmName" data-bind="value: frmName"/>
<input id="frmName" data-bind="value: frmAddress"/>
</form>

预期输出:输入元素将没有值 [object HTMLInputElement]

最佳答案

我不太确定发生了什么,但您基本上在对象嵌套上偏离了一个方向。 Create VM 有一个属性是真正的 VM。所以你只需要调整你的绑定(bind)和Tada!

function FrmAddGoodsVM() {
let self = this;
self.frmName = ko.observable("");
self.frmAddress = ko.observable("");
}

function CreateVM() {
let self = this;
self.FrmAddGoodsVM = new FrmAddGoodsVM();
}

let createVM = new CreateVM();
ko.applyBindings(createVM.FrmAddGoodsVM)
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>

<form role="form">
<input id="frmName" data-bind="value: frmName"/>
<input id="frmName" data-bind="value: frmAddress"/>
</form>

附带说明一下,为一个功能引入 jquery 是相当浪费的,尤其是当 knockout 正好在 dom 末尾加载时,或者您可以只使用原始版本 OnContentReady .

关于javascript - ViewModel 上的 Knockoutjs 绑定(bind)输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58533610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com