knockout.js 启用选择控件的某些选项,根据对象数组的某些属性禁用其余选项

7tofc5zh  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(168)

我是knockout的新手,想使用一个选择窗体控件,并启用一些基于数组中对象的属性的选项绑定到选择控件。
绑定到select表单控件的对象数组如下所示:

soldRequestBuyerType = 
[{id: 0, description: "Highest Bidder at Auction", status: "false"}
{id: 1, description: "Nominate Another Buyer", status:"true"}
{id: 2, description: "Book to Selling Agent", status:"true"}];

如果绑定对象的status属性为true,则应启用该选项以进行选择;如果为false,则应禁用该选项。
请帮助我使用敲除提供对选择控件的绑定。

rggaifut

rggaifut1#

你可以用一个计算出的可观测量来完成这一点:

function ViewModel() {
    var vm = this;

    vm.soldRequestBuyerType = [
        { id: 0, description: "Highest Bidder at Auction", status: false },
        { id: 1, description: "Nominate Another Buyer", status: true },
        { id: 2, description: "Book to Selling Agent", status: true }
    ];

    vm.availableSoldRequestBuyerType = ko.pureComputed(() => {
        return vm.soldRequestBuyerType.filter((value) => value.status);
    });
}

工作提琴:https://jsfiddle.net/thebluenile/p86La5d3/
实际上,如果愿意,您也可以使status属性可见,这样,每当这些属性发生变化时,选择菜单就会自动更新。

puruo6ea

puruo6ea2#

文档中有一个例子解释了如何有选择地禁用select元素中的选项。
创建一个函数,将一个项目与您的首选状态选项进行比较。呈现每个选项后,通过disable绑定应用它。
下面是一个实际应用的例子:
第一个
另一种方法可能是直接在数据中添加disabled属性,并使用foreach绑定“手动”呈现options(即不使用options绑定)。

相关问题