ng jsTree将错误的对象作为选定节点返回

时间:2014-12-23 14:56:51

标签: javascript jquery angularjs jstree

我正在使用ng jsTree组件https://github.com/ezraroi/ngJsTree

这是我的实施

<div js-tree="treeConfig" ng-model="treeData" tree="treeInstance" tree-events="check_node:getSelectedCategories;uncheck_node:getSelectedCategories"></div>

控制器中的JS代码

$scope.treeConfig = {
    core : {
        multiple : true,
        animation: false,
        error : function(error) {
            $log.error('treeCtrl: error from js tree - ' + angular.toJson(error));
        },
        check_callback : true,
        worker : true
    },
    types : {
        default : {
            icon : 'glyphicon glyphicon-flash'
        },
        star : {
            icon : 'glyphicon glyphicon-star'
        },
        cloud : {
            icon : 'glyphicon glyphicon-cloud'
        }
    },
    version : 1,
    "checkbox" : {
        "tie_selection" : false
    },
    plugins : ['types','checkbox']
};

$scope.treeData = [
    { id : 'ajson1', parent : '#', text : 'Simple root node', state: { opened: true} },
    { id : 'ajson2', parent : '#', text : 'Root node 2', state: { opened: true} },
    { id : 'ajson3', parent : 'ajson2', text : 'Child 1', state: { opened: true} },
    { id : 'ajson4', parent : 'ajson2', text : 'Child 2' , state: { opened: true}}
];

$scope.getSelectedCategories = function(e, data) {
    console.log('data: ', data);
};

所以,当我查看ajson2&#39;节点,使用所选属性返回的数据是&#39; ajson2&#39;,但是当我取消选中&#39; ajson2&#39;时,使用所选属性返回的数据是&#39; ajson3&#39;,&#39; ajson4& #39;

看起来这是错误,还是我错过了什么?

1 个答案:

答案 0 :(得分:0)

控制台记录'数据'未提供正确的信息。

刚刚想出解决方案。更新了$ scope.getSelectedCategories(),如下所示

$scope.getSelectedCategories = function() {
    var selected_nodes = $scope.treeInstance.jstree(true).get_checked(true);
    console.log(selected_nodes);
};

记录选定的节点对象。