Angularjs 如何通过选中复选框选择多个值并在文本字段中显示结果?

Angularjs 如何通过选中复选框选择多个值并在文本字段中显示结果?,angularjs,kendo-ui,treeview,Angularjs,Kendo Ui,Treeview,我使用kendotreeview和AngularJS从REST服务获取数据。我希望能够选中多个复选框,并将它们显示在输入字段中 以下是我目前掌握的情况: HTML: 合法的 实体: Controller.js $scope.treeOptions = { checkboxes: true, }; $scope.$on("kendoWidgetCreated", function(event, widget){ if (widget === $scope.treeWidg

我使用
kendotreeview
AngularJS
REST
服务获取数据。我希望能够选中多个复选框,并将它们显示在输入字段中

以下是我目前掌握的情况:

HTML:


合法的
实体:
Controller.js

$scope.treeOptions = {
 checkboxes: true,
 };
 $scope.$on("kendoWidgetCreated", function(event, widget){
        if (widget === $scope.treeWidget) {
            widget.element.find(".k-checkbox input:checked").each(function(){
                widget.expand( $(this).parents(".k-item") );
            });
        }
        $scope.onRightClick = function(e) {
          var node = e.target;
          $scope.treeWidget = $scope.nonPersistentProcess.legalEnty
          $scope.treeWidget.select(node);
          $scope.selectedItem = $scope.treeWidget.dataItem(node);
        } 
    });
    var legalEntiryOptionsDataSource; 
    legalEtityTreeOptions = TreeViewData 
    .query( {
        id :'LEGAL_ENTITY' 
            }, function() { 
                $scope.legalEntiryOptionsDataSource = new kendo.data.HierarchicalDataSource( { 
                    data :legalEtityTreeOptions 
                    }); 
            });
      $scope.itemLegEntyTemplate = '<a ng-click="selectLeglEntyTree(this)" class="no-style">{{dataItem.text}}</a>';     
      $scope.selectLeglEntyTree = function (object){
      $scope.nonPersistentProcess.legalEnty = object.dataItem.text;
      $scope.processDTO.legalEnty = object.dataItem.id;
      $scope.showLegalEntityTreeView = {display: 'none'};
    }
$scope.treeOptions={
复选框:正确,
};
$scope.$on(“kendoWidgetCreated”,函数(事件,小部件){
if(widget==$scope.treeWidget){
widget.element.find(“.k-checkbox输入:选中”).each(函数(){
展开($(this.parents(.k-item));
});
}
$scope.onRightClick=函数(e){
var节点=e.target;
$scope.treeWidget=$scope.nonPersistentProcess.legalEnty
$scope.treeWidget.select(节点);
$scope.selectedItem=$scope.treeWidget.dataItem(节点);
} 
});
var legalEntiryOptionsDataSource;
legalEtityTreeOptions=TreeViewData
.查询({
id:“法人实体”
},函数(){
$scope.legalEntiryOptionsDataSource=新的kendo.data.HierarchycalDataSource({
数据:legalEtityTreeOptions
}); 
});
$scope.itemLegEntyTemplate='{{dataItem.text}}}';
$scope.selectLeglEntyTree=函数(对象){
$scope.nonPersistentProcess.legalEnty=object.dataItem.text;
$scope.processDTO.legalEnty=object.dataItem.id;
$scope.showLegalEntityTreeView={display:'none'};
}

我将尝试回答,但无法保证它会起作用

看看这个小玩意儿:

看来你需要做一些类似的事情

$scope.treeOptions = {
  checkboxes: {
    checkChildren: true
  },
  dataBound: function(e) {
    $scope.attachChangeEvent(e);

  }

};
显然,这符合你自己的参数

但是,您可以创建一个函数:

$scope.attachChangeEvent = function(e) {

  var dataSource = e.sender.dataSource;
  // issue : change event is getting called multiple times for every click on checkbox
  dataSource.bind("change", function(e) {
    var selectedNodes = 0;

    var checkedNodes = [];

    $scope.checkedNodeIds(dataSource.view(), checkedNodes);


    for (var i = 0; i < checkedNodes.length; i++) {
      var nd = checkedNodes[i];
      if (nd.checked) {
        selectedNodes++;
      }
    }
    $scope.nonPersistentProcess.legalEnty = selectedNodes;
  });
};
$scope.attachChangeEvent=函数(e){
var dataSource=e.sender.dataSource;
//问题:每次单击复选框都会多次调用更改事件
dataSource.bind(“更改”,函数(e){
var selectedNodes=0;
var checkedNodes=[];
$scope.checkedNodeId(dataSource.view(),checkedNodes);
对于(var i=0;i
感谢您的回复
$scope.attachChangeEvent = function(e) {

  var dataSource = e.sender.dataSource;
  // issue : change event is getting called multiple times for every click on checkbox
  dataSource.bind("change", function(e) {
    var selectedNodes = 0;

    var checkedNodes = [];

    $scope.checkedNodeIds(dataSource.view(), checkedNodes);


    for (var i = 0; i < checkedNodes.length; i++) {
      var nd = checkedNodes[i];
      if (nd.checked) {
        selectedNodes++;
      }
    }
    $scope.nonPersistentProcess.legalEnty = selectedNodes;
  });
};