从角变量填充jstree threeview

时间:2017-05-31 13:26:42

标签: javascript angularjs jstree

到目前为止,我已经完成了90%的前提技巧,所以我现在需要帮助。

我使用jstree构建了treview,它可以正常运行静态数据(else块中的那个),如下所示。

<script>
    $(function() {
        $("#list").jstree({
            "core": {
                "data": function (node, cb) {
                    if (node.id === "#") {
                        cb([{
                            "text": "Root",
                            "state": {"opened": true},
                            "children": true
                        }]);
                    } else {
                        // This is the one I am try to populate dynamicaly
                        cb([{"id":"1","text":"Lis 1"},{"id":"2","text":"Lis 2"}]);
                    }
                }
            }
        });
    });
</script>

但是,我现在需要使用来自角度变量else的动态结果集来填充vm.list块(可以转储 {{ vm.list }} 在HTML页面)所以我该怎么办?该文档包含有关人口数据的一些动态详细信息(htmlarray/jsonajaxlazy loadcallback),但不是我需要的。

在回调函数中将vm作为第三个参数传递,并将else块更改为cb(vm.cat);没有做到这一点。如果我的前端知识不是最底层的话,我会想出更好的尝试!

我的角度控制器看起来像:

'use strict';

module.exports = ['$on', '$timeout', 'listService',
    function($on, $timeout, listService) {
        var vm = this;
        ....
        load();
        ....

        function load() {
            // This is actually coming from an API and massive
            vm.cat = [{'id':'1', 'text':'Lis 1'}, {'id':'2', 'text':'Lis 2'}];
        };
    }
];

1 个答案:

答案 0 :(得分:0)

我有一个有效的解决方案,但不喜欢它,所以我会等待有更好解决方案的人,否则我很遗憾地接受这一点,因为它将内容转储到DOM元素并将其内容读取到在我看来,创建一个有点hacky和沉重的树。

<div id="data" style="display: none">{{ vm.cat }}</div>


$(function() {
    var data = $('#data').text();
    if (data) {
        $("#list").jstree({
            "core": {
                "data": JSON.parse(data)
            }
        });
    }
});