【问题标题】:Knockout select options and dependencies淘汰赛选择选项和依赖项
【发布时间】:2014-12-06 00:20:17
【问题描述】:

我有一个选择列表,我想根据选择更改不同 div 的可见性。

<table>
    <tbody data-bind="foreach: conditions">
        <tr>
            <td>
                <select data-bind="options: $parent.conditionTypes, optionsText: 'name', optionsValue: 'id', value: type"></select>
            </td>
            <td>
                <div data-bind="visible: $parent.isGroupCondition($data)">
                    Group list
                </div>
                <div data-bind="visible: $parent.isTagCondition($data)">
                    Tag list
                </div>
            </td>
            <td>
                <select data-bind="options: $parent.conditionOperations, optionsText: 'name', optionsValue: 'id', value: operation"></select>
            </td>
            <td>
                <input type="text" data-bind="attr: {value: value}" />
            </td>
            <td>
                <a href="#" data-bind="click: $parent.removeCondition.bind($parent)">remove</a>
            </td>
        </tr>
    </tbody>
</table>

我尝试使用事件绑定“event: {change: $parent.conditionTypeChanged}”,但我不确定如何触发 div 的绑定。

非常感谢任何帮助。

编辑:JsFiddle

【问题讨论】:

    标签: javascript knockout.js


    【解决方案1】:

    您只需在conditions 中的项目中设置type 属性observable

    conditions: ko.observableArray([{type: ko.observable(1), operation: 1, value: 'test'}]),
    

    并在您的 isGroupConditionisTagCondition 函数中使用 observable:

    isGroupCondition: function (condition) {
        return condition.type() === 2;
    },
    isTagCondition: function (condition) {
        return condition.type() === 1;
    },
    

    因为您的 type 现在是可观察的 Knockout 将负责更新可见性绑定并隐藏/显示您的 div。

    演示JSFiddle.

    【讨论】:

    • 谢谢! ;) 这实际上是在我看到你的答案之前我才恍然大悟
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 2016-05-24
    相关资源
    最近更新 更多