jsTree 3 - 如何在不选择项目的情况下预先检查它

jsTree 3 - How do I pre-check an item without selecting it

我正在使用 jsTree 3 并尝试根据标准预先检查一些行。

这是我配置树的方法:-

    $(function () {
        $("#ProductInterests").jstree
            ({
                "core" : { "themes" : { "icons" : false }},
                "plugins": ["themes", "html_data", "checkbox"]
            });

    });

然后我在网上其他地方找到了三个建议的解决方案(if 的前半部分应该导致检查节点,第二部分应该导致未检查节点):-

<ul>
    @foreach (var productGroup in ViewBag.ProductGroups)
    {
        <li class="jstree-open">@productGroup.Name
            <ul>
                @foreach (var product in productGroup.Products)
                {
                    if (Model.LeadProductInterests.Any(lpi => lpi.ProductID == product.ID))
                    { 
                        <li data-jstree='{"selected":true}'>@product.Name</li>
                        <li data-jstree='{"state":{"checked":true}}'>@product.Name</li>
                        <li class="jstree-checked">@product.Name</li>
                }
                    else
                    { 
                        <li data-jstree='{"selected":false}'>@product.Name</li> 
                        <li data-jstree='{"state":{"checked":false}}'>@product.Name</li>
                        <li>@product.Name</li>
                    }
                }
            </ul>
        </li>
    }
</ul>

在这三种方法中,第一种方法导致节点被选中和检查。第二个和第三个导致既未选择也未检查的节点。我想得到一个选中但未选中的节点。

从存储库获取最新代码 - 这是一个已知错误,现已修复。另请记住,为了单独检查和选择集合,您需要将 checkbox.tie_selection 设置为 false(如下面的 fiddle 所示)。

一旦你得到最新的副本(不是 3.1.1,而是实际的 repo 代码:https://github.com/vakata/jstree/archive/master.zip)你可以使用这个:

<li data-jstree='{"checked":true}'>@product.Name</li>

这是演示:http://jsfiddle.net/DGAF4/516/