【问题标题】:make knockout array object visible based on an id value根据 id 值使剔除数组对象可见
【发布时间】:2014-01-19 08:32:41
【问题描述】:

我看到的所有示例都是针对页面上显式编写的 DOM 元素。在我的情况下,我使用淘汰赛 foreach 在我的可观察数组中创建项目列表:

<div class="tab-pane fade" id="recruiting">
    <input type="text" data-bind="value: selectedOrgKey" id="orgSectionId" onchange="FlipOrgView()" style="visibility: hidden;" />
    <ul class="list-unstyled" data-bind="foreach: orgs">
        <li data-bind="attr: { id: 'orgSection' + orgId}" class="orgSection">

我目前正在使用一个 kludgy 解决方案,通过使用隐藏元素上的 onchange 来获取 id 并 .show() 它。

window.OrgDdlUpdated = function () {
    $(".orgSection").hide();
    var selectedOrgId = $('#orgDropDown').val();
    //alert(selectedOrgId);
    flipOrgView(selectedOrgId);
};

var flipOrgView = function (id) {
    $('#orgSection' + id).show();
};

这在技术上是第一次有效,但是当我翻阅这一切时,选定的 id 落后于它显示先前选择的位置,而不是当前选择。我知道有多种方法可以实现这一点,所以淘汰赛或其他方式,我如何使用淘汰赛 foreach 方法正确切换对象数组的可见性?

【问题讨论】:

    标签: javascript jquery arrays knockout.js


    【解决方案1】:

    怎么样:

    <div class="tab-pane fade" id="recruiting">
        <input type="text" data-bind="value: selectedOrgKey" id="orgSectionId" style="visibility: hidden;" />
        <ul class="list-unstyled" data-bind="foreach: orgs">
            <li data-bind="visible: $parent.selectedOrgKey() === orgId(), attr: { id: 'orgSection' + orgId}" class="orgSection">
    

    我不太确定在您的示例中您是如何设置 selectedOrgKey 的,但这应该会执行我认为您正在处理的 MVVM 行为。

    【讨论】:

    • 啊,谢谢。这个正在杀死我的大脑。或缺乏大脑。
    • @davidisawesome np 很高兴为您提供帮助 :)
    猜你喜欢
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    • 1970-01-01
    • 2021-07-29
    • 2014-10-23
    • 1970-01-01
    相关资源
    最近更新 更多