Angularjs 用于AnfularJS网格工具栏的KendoUI自定义按钮样例可见性

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

我需要将自定义按钮添加到剑道网格工具栏,并通过单击另一个按钮来切换彼此的可见性(例如,按钮1单击隐藏按钮1并显示按钮2,按钮2单击隐藏按钮2并显示按钮1)

我可以添加这些按钮,但无法更改其可见性

我的代码:

<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>