Filter 在敲除中将函数数据传输到可观测阵列

Filter 在敲除中将函数数据传输到可观测阵列,filter,knockout.js,Filter,Knockout.js,我有数据要过滤。然后,这些数据将被放入foreach循环中。 例如,如何使用函数获取这些数据?以下是视图: enter code here<ul> <!-- ko foreach: {data: Menus} --> <!-- ko if: TitleId === 0 && Sub === true --> <li> <i class="fa fa-home"></i><br><sp

我有数据要过滤。然后,这些数据将被放入foreach循环中。 例如,如何使用函数获取这些数据?以下是视图:

enter code here<ul>
<!-- ko foreach: {data: Menus} -->
<!-- ko if: TitleId === 0 && Sub === true -->
<li>
    <i class="fa fa-home"></i><br><span data-bind="text: Name"></span>
    <ul>
        <!-- ko foreach: {data: $parent.childMenus} -->
        <li>
            <a data-bind="attr: { href: $data.Url}">
                <span data-bind="text: $data.Name"></span>
            </a>
        </li>
        <!-- /ko -->
    </ul>
</li>
<!-- /ko -->
<!-- ko if: TitleId === 0 && Sub === false -->
<li>
    <span data-bind="text: Name"></span>
</li>
<!-- /ko -->
<!-- /ko -->

您可以在数组对象上使用本机javascript的
filter
方法,如下所示:

self.childMenus(self.Menus().filter((i) => i.someField == myDataToFilter ));
筛选器将返回一个数组,其中的项与您输入的条件匹配,如果未找到任何项,则将返回一个空数组


因此,您所要做的就是对基础数组进行
筛选
,并将结果分配给childMenus数组。

对不起,我应该先打个招呼,谢谢您的帮助:)确保检查
菜单
上是否有数组,即使是空数组,等等,但是你应该了解你的问题的概念,并相应地调整。谢谢你的回答。在循环中,此筛选器数组无法动态工作。我希望子菜单在循环中的每个菜单项下溢出。好的,但是为了帮助您,您必须给出模型定义,以便我们能够正确地编写一些内容。我给你的只是一个起点,你可以用它把所有的子菜单放到父菜单中,如果你是这个意思的话。我编辑了我的问题。必须动态刷新parent.childmenu。因此,每个子菜单序列将根据单个父id值进行更改。非常感谢你。
self.childMenus(self.Menus().filter((i) => i.someField == myDataToFilter ));