gpt4 book ai didi

javascript - 可观察对象的 KnockoutJS Observable 对象

转载 作者:搜寻专家 更新时间:2023-11-01 05:01:34 26 4
gpt4 key购买 nike

我想制作可观察对象的可观察对象。例如:

        var Project = function(id, name, custId) {
this.id = ko.observable(id);
this.name = ko.observable(name);
this.custId = ko.observable(custId);
}

var viewModel = function() {

this.newUpProj = ko.observable(new Project(null,null,null));
...
}

类似这样的事情...我希望 newUpProject 是可观察的,并且它的属性是可观察的。我也试过 this.newUpProj = ko.mapping.fromJS(new Project());

Edit1:它创建了对象,但它的属性(id、名称...)不是可观察的...

Edit2:在 html 中使用:

<div class="modal-body">
<p><input type="text" id="projNameTx" data-bind="value: newUpProj.name()" /></p><br>
<p><select data-bind="options: customers, optionsCaption: 'Choose...', value: newUpProj.custId(), optionsText: 'name', optionsValue: 'id'"
size="1"></select></p>

</div>
<div class="modal-footer">
<button class="btn" data-bind="click: clearModal" aria-hidden="true">Close</button>
<button class="btn btn-primary" data-bind="click: updateFlag() ? updateProject : addProject, enable: newUpProj.custId() && newUpProj.name()">Save</button>
</div>

输入和选择中加载了正确的值,但如果输入为空(例如),保存按钮永远不会禁用,因为更改不会进入模型。

最佳答案

可能只需要在绑定(bind)中执行 newUpProj?

enable: newUpProj().custId() && newUpProj().name()

如果做不到这一点,您可以尝试制作一个计算可观察对象,根据 custId 和名称的状态将其设置为 true 或 false

关于javascript - 可观察对象的 KnockoutJS Observable 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14815047/

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