简体   繁体   English

从angularjs中的树中获取选定的复选框值

[英]get selected checkbox values from tree in angularjs

I would like to know how can we get the selected checkbox values from tree in controller from the below example? 我想知道如何从下面的示例中从控制器的树中获取选定的复选框值? On click of a button i want to display all the checkbox names in an array. 在单击按钮时,我要显示数组中的所有复选框名称。 Here is my plnkr- https://plnkr.co/edit/OSpLLl9YrlzqhM7xsYEv?p=preview //code goes here, 这是我的plnkr- https://plnkr.co/edit/OSpLLl9YrlzqhM7xsYEv?p=preview //代码在这里,

    //Controller
    Controller to display the tree.
    (function (ng) {
        var app = ng.module('tree', ['tree.service', 'tree.directives']);
        app.controller("TreeController", ["TreeService", function (TreeService) {
            var tc = this;
            buildTree();
            function buildTree() {
                TreeService.getTree().then(function (result) {
                    tc.tree = result.data;
                }, function (result) {
                    alert("Tree no available, Error: " + result);
                });
            }
        }]);
    })(angular);




    //Tree Directive
Directive used for creating tree node.
(function (ng) {
    var app = ng.module('tree.directives', []);
    app.directive('nodeTree', function () {
        return {
            template: '<node ng-repeat="node in tree"></node>',
            replace: true,
            restrict: 'E',
            scope: {
                tree: '=children'
            }
        };
    });
    app.directive('node', function ($compile) {
        return {
            restrict: 'E',
            replace: true,
            templateUrl: 'node.html', // HTML for a single node.
            link: function (scope, element) {
                /*
                 * Here we are checking that if current node has children then compiling/rendering children.
                 * */
                if (scope.node && scope.node.children && scope.node.children.length > 0) {
                    scope.node.childrenVisibility = true;
                    var childNode = $compile('<ul class="tree" ng-if="!node.childrenVisibility"><node-tree children="node.children"></node-tree></ul>')(scope);
                    element.append(childNode);
                } else {
                    scope.node.childrenVisibility = false;
                }
            },
            controller: ["$scope", function ($scope) {
                // This function is for just toggle the visibility of children
                $scope.toggleVisibility = function (node) {
                    if (node.children) {
                        node.childrenVisibility = !node.childrenVisibility;
                    }
                };
                // Here We are marking check/un-check all the nodes.
                $scope.checkNode = function (node) {
                    node.checked = !node.checked;
                    function checkChildren(c) {
                        angular.forEach(c.children, function (c) {
                            c.checked = node.checked;
                            checkChildren(c);
                        });
                    }

                    checkChildren(node);
                };
            }]
        };
    });
})(angular);

Hello: Look at this plunker link. 您好:看一下这个链接。 It works here 它在这里工作

https://plnkr.co/edit/vaoCzUJZBf31wtLNJ5f5?p=preview https://plnkr.co/edit/vaoCzUJZBf31wtLNJ5f5?p=预览

(function (ng) {
var app = ng.module('tree', ['tree.service', 'tree.directives']);
app.controller("TreeController", ["TreeService", "$scope", function (TreeService, $scope) {
    var tc = this;
    buildTree();
    function buildTree() {
        TreeService.getTree().then(function (result) {
            tc.tree = result.data;
        }, function (result) {
            alert("Tree no available, Error: " + result);
        });
    }


   $scope.selectedItems = [];

   $scope.getSelected = function(){
     $scope.selectedItems = [];
     function checkChildren(c) {
          angular.forEach(c.children, function (c) {
             if (c.checked){
                $scope.selectedItems.push({"selected":c.name});
             }
              checkChildren(c);
          });
     }


      angular.forEach(tc.tree, function(value, key) {
          if (value.checked){
            $scope.selectedItems.push({"selected":value.name});
          }

           checkChildren(value);
      });
   };
}]);})(angular);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM