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;
});
};