为了账号安全,请及时绑定邮箱和手机立即绑定

在 ViewModel 上的 Knockoutjs 绑定输入

在 ViewModel 上的 Knockoutjs 绑定输入

慕容森 2021-12-02 10:28:28
我有一个名为 CreateVM 的 Knockout.js ViewModel 包含其他 ViewModel - FrmAddGoodsVM。问题是当我将一些输入绑定到 FrmAddGoodsVM 时,输入将显示 [object HTMLInputElement]。有人可以告诉我我错过了什么吗?我已将这些输入绑定从 FrmAddGoodsVM 放到 CreateVM 中,并且运行良好。但我想从 FrmAddGoodsVM 绑定它们,不知道为什么它不起作用。索引.jsfunction 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'))})索引.html<form role="form">    <input id="frmName" data-bind="value: frmName"/>    <input id="frmName" data-bind="value: frmAddress"/></form>预期输出:输入元素将没有值 [object HTMLInputElement]
查看完整描述

1 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

我不太确定发生了什么,但是您基本上在对象嵌套上相差甚远。Create VM 有一个属性,它是真正的 VM。所以你只需要调整你的绑定和多田!


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 引入单个功能是非常浪费的,尤其是当淘汰赛在 dom 末尾加载时很好,或者您可以只使用香草版本,OnContentReady.


查看完整回答
反对 回复 2021-12-02
  • 1 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信