【问题标题】:Knockout: Alert based on property of list of objects on select option淘汰赛:基于选择选项上对象列表属性的警报
【发布时间】:2019-02-12 00:12:08
【问题描述】:

我知道这是一个简单的更改,但尽管研究和尝试了很多事情,但我仍然无法实现它。我是 Knockout 的新手。 我有 Payors 具有 IsValueChecked 布尔属性的对象列表的这个选择选项。

<select name="InsuranceId" data-bind="options:Payors , 
                                      optionsValue: 'Id', 
                                      optionsText: 'Text', 
                                      value:InsuranceId"> 
</select>

如果IsValueCheckedtrue,我想创建一个警报,但是我正在更新的值是InsuranceId。我正在尝试通过订阅InsuranceId 来实现这一目标。

vm.InsuranceId.subscribe(function (newValue) {
    //doing something here
}

这个逻辑怎么写?

【问题讨论】:

    标签: javascript data-binding knockout.js


    【解决方案1】:

    Payors 必须是数组或 observableArray,包含您要选择的选项。

    当您订阅 InsuranceId 时,您将获得选定的 Id。使用它来过滤Payors

    vm.Payors = ko.observableArray([
        {IsValueChecked : false, Id : 1, Text: 'False'},
        {IsValueChecked : true, Id: 2, Text: 'True'}
    ]);
    
    vm.InsuranceId.subscribe(function (newValue) {
        var boolean = vm.Payors().find(function(payorObject){
             if (newValue === payorObject.Id) {
                 return payorObject.IsValueChecked;
             }
        });
        if (boolean) alert ("IsValueChecked is true");
    }
    

    【讨论】:

    • 感谢您的回答,但在这种情况下,我需要 optionsValue 作为 Id Guid。无论如何我可以在不修改 optionsValue 的情况下使用 IsValueChecked?
    • 注明。我已经更新了答案,没有改变 html
    • 完美。此外,您的答案有一个小的变化。我没有直接检查 payorObject.Id ,而是改为 payorObject.Id() 来获取值。 payorObject.IsValueChecked() 也一样。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 2013-10-18
    相关资源
    最近更新 更多