Angularjs 用于AnfularJS网格工具栏的KendoUI自定义按钮样例可见性
我需要将自定义按钮添加到剑道网格工具栏,并通过单击另一个按钮来切换彼此的可见性(例如,按钮1单击隐藏按钮1并显示按钮2,按钮2单击隐藏按钮2并显示按钮1) 我可以添加这些按钮,但无法更改其可见性 我的代码:Angularjs 用于AnfularJS网格工具栏的KendoUI自定义按钮样例可见性,angularjs,kendo-grid,Angularjs,Kendo Grid,我需要将自定义按钮添加到剑道网格工具栏,并通过单击另一个按钮来切换彼此的可见性(例如,按钮1单击隐藏按钮1并显示按钮2,按钮2单击隐藏按钮2并显示按钮1) 我可以添加这些按钮,但无法更改其可见性 我的代码: <div kendo-grid="grid" k-toolbar="toolbar" k-options="options"> </div> 类customGrid实现ng.IDirective{ 公共限制='A'; public templateUrl='cu
<div kendo-grid="grid" k-toolbar="toolbar" k-options="options">
</div>
类customGrid实现ng.IDirective{
公共限制='A';
public templateUrl='customGrid.directive.html';
公共范围={
选项:“=”,
网格:'='
};
构造函数(){
}
公共链接=(范围)=>{
scope.toolbarItems=[
{
名称:“播放”,
iconClass:“足球比赛”,
处理程序:(工具栏:任意)=>{
//这里是能见度开关
}
},
{
名称:“暂停”,
iconClass:“fa fa pause”,
处理程序:(工具栏:任意)=>{
//这里是能见度开关
}
}];
常量工具栏:任意[]=[];
for(设i=0;i
我可以直接对DOM进行操作,但也许可以使用angularJS进行同样的操作
另外,这只是一个示例,在实际项目中,“toolbarItems”是一个指令的参数,它们的计数可以不同。更新了dojo以获得相同的结果。您可以使用一个按钮,而不是单独的按钮,并根据需要更改/切换其css类 希望这能解决你的问题
<!DOCTYPE html>
<html>
<head>
<base href="https://demos.telerik.com/kendo-ui/grid/angular">
<style>html { font-size: 14px; font-family: Arial, Helvetica, sans-serif; }</style>
<title></title>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2015.3.930/styles/kendo.default.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" />
<script src="https://kendo.cdn.telerik.com/2015.3.930/js/jquery.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2015.3.930/js/angular.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2015.3.930/js/kendo.all.min.js"></script>
</head>
<body>
<div id="example" ng-app="KendoDemos">
<div ng-controller="MyCtrl">
<kendo-grid options="mainGridOptions" k-toolbar="toolbar">
</kendo-grid>
</div>
</div>
<script>
angular.module("KendoDemos", [ "kendo.directives" ])
.controller("MyCtrl", function($scope){
$scope.toolbarItems = [
{
name: 'pause',
iconClass: 'fa fa-play',
handler: ($event) => {
//visibility switch here
if(event.srcElement.className == 'fa fa-pause')
event.srcElement.className = "fa fa-play"
else
event.srcElement.className = "fa fa-pause"
}
}];
var toolbar = [];
for (var i = 0; i < $scope.toolbarItems.length; i++) {
toolbar.push({
template: `<a ng-click="toolbarItems[${i}].handler()" class="k-button k-button-icontext" href="##"><i class="${$scope.toolbarItems[i].iconClass}"></i></a>`
});
}
$scope.toolbar = toolbar;
$scope.mainGridOptions = {
dataSource: {
type: "odata",
transport: {
read: "https://demos.telerik.com/kendo-ui/service/Northwind.svc/Employees"
}
},
sortable: true,
columns: [{
field: "FirstName",
title: "First Name",
width: "120px"
},{
field: "LastName",
title: "Last Name",
width: "120px"
},{
field: "Country",
width: "120px"
},{
field: "City",
width: "120px"
},{
field: "Title"
}]
};
})
</script>
</body>
</html>
html{字体大小:14px;字体系列:Arial、Helvetica、sans serif;}
angular.module(“KendoDemos”[“kendo.directives”])
.controller(“MyCtrl”,函数($scope){
$scope.toolbarItems=[
{
名称:“暂停”,
iconClass:“足球比赛”,
处理程序:($event)=>{
//这里是能见度开关
如果(event.srcement.className=='fa-fa-pause')
event.srcement.className=“fa-fa-play”
其他的
event.srcmelement.className=“fa暂停”
}
}];
var工具栏=[];
对于(变量i=0;i<$scope.toolbarItems.length;i++){
工具栏推送({
模板:``
});
}
$scope.toolbar=工具栏;
$scope.mainGridOptions={
数据源:{
类型:“odata”,
运输:{
阅读:“https://demos.telerik.com/kendo-ui/service/Northwind.svc/Employees"
}
},
可排序:是的,
栏目:[{
字段:“名字”,
标题:“名字”,
宽度:“120px”
},{
字段:“姓氏”,
标题:“姓氏”,
宽度:“120px”
},{
字段:“国家”,
宽度:“120px”
},{
字段:“城市”,
宽度:“120px”
},{
字段:“标题”
}]
};
})
你能为SameuUpdate创建一个演示吗?演示嗨,Sergey,你的问题解决了吗?谢谢,你的解决方案很好。我会用这个。
<!DOCTYPE html>
<html>
<head>
<base href="https://demos.telerik.com/kendo-ui/grid/angular">
<style>html { font-size: 14px; font-family: Arial, Helvetica, sans-serif; }</style>
<title></title>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2015.3.930/styles/kendo.default.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" />
<script src="https://kendo.cdn.telerik.com/2015.3.930/js/jquery.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2015.3.930/js/angular.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2015.3.930/js/kendo.all.min.js"></script>
</head>
<body>
<div id="example" ng-app="KendoDemos">
<div ng-controller="MyCtrl">
<kendo-grid options="mainGridOptions" k-toolbar="toolbar">
</kendo-grid>
</div>
</div>
<script>
angular.module("KendoDemos", [ "kendo.directives" ])
.controller("MyCtrl", function($scope){
$scope.toolbarItems = [
{
name: 'pause',
iconClass: 'fa fa-play',
handler: ($event) => {
//visibility switch here
if(event.srcElement.className == 'fa fa-pause')
event.srcElement.className = "fa fa-play"
else
event.srcElement.className = "fa fa-pause"
}
}];
var toolbar = [];
for (var i = 0; i < $scope.toolbarItems.length; i++) {
toolbar.push({
template: `<a ng-click="toolbarItems[${i}].handler()" class="k-button k-button-icontext" href="##"><i class="${$scope.toolbarItems[i].iconClass}"></i></a>`
});
}
$scope.toolbar = toolbar;
$scope.mainGridOptions = {
dataSource: {
type: "odata",
transport: {
read: "https://demos.telerik.com/kendo-ui/service/Northwind.svc/Employees"
}
},
sortable: true,
columns: [{
field: "FirstName",
title: "First Name",
width: "120px"
},{
field: "LastName",
title: "Last Name",
width: "120px"
},{
field: "Country",
width: "120px"
},{
field: "City",
width: "120px"
},{
field: "Title"
}]
};
})
</script>
</body>
</html>