Maison interface Web js tutoriel intégration ui de vue2+kendo

intégration ui de vue2+kendo

Mar 12, 2018 am 09:47 AM
整合

Cette fois, je vais vous présenter l'intégration UI de vue2+kendo. Quelles sont les précautions lors de l'utilisation de l'intégration ui de vue2+kendo. Ce qui suit est un cas pratique, jetons un coup d'œil.

/*
*  common.js
*///配置区kendo.culture("zh-CN");//中文显示const defaultGridOptions = { 
    sortable: true,    groupable: false,    selectable: true,    editable: false,    resizable: true,    reorderable: true,    pageable: {        refresh: true,        pageSize: 20,        pageSizes: [20, 50, 100, 200]
    }
}; //表格默认配置--用于配置复用//函数区function getContainerH() { //获取表内容主体(包含头部标题与底部分页栏)高度
    var nBar = $(".nav-bar");//<=====我这里定义的是搜索栏
    var outerHeight = 0;
    $(".nav-bar").each(function(i, v) {
        outerHeight += $(v).outerHeight();
    });    return window.innerHeight - outerHeight - 1;
}function resizeGrid(containerHeight) { //设置表内容高度
    containerHeight = (containerHeight == undefined ? getContainerH() : containerHeight);
    $(&#39;.k-grid.dynamicHeight,.dynamic-height.k-grid&#39;).each(function() {        var grid = $(this),
            h1 = grid.find(&#39;div.k-grid-toolbar&#39;).outerHeight() || 0,
            h2 = grid.find(&#39;div.k-grouping-header&#39;).outerHeight() || 0,
            h3 = grid.find(&#39;div.k-grid-header&#39;).outerHeight() || 0,
            h4 = grid.find(&#39;div.k-grid-pager&#39;).outerHeight() || 0,
            ch = containerHeight - 2 - h1 - h2 - h3 - h4; 
        if(ch > 0) {
            grid.find(&#39;div.k-grid-content&#39;).css(&#39;maxHeight&#39;, ch + &#39;px&#39;);
            grid.find(&#39;div.k-grid-content-locked&#39;).css(&#39;maxHeight&#39;, ch + &#39;px&#39;);
        } 
    });
}function getDataSourceConfig(idField, readUrl, filter) { //表格配置初始化
    return {        schema: {            model: {                id: idField
            },            data: function(response) {                return response.data || response;
            },            total: &#39;total&#39;
        },        transport: {            parameterMap: function(options) {                return kendo.stringify(options);
            },            read: getTransport(readUrl)
        },        pageSize: 20,        serverPaging: true,        serverFiltering: true,        serverSorting: true,        filter: filter,        selectable: "row"
    };
}function getDataSource(idField, readUrl, filter) { //创建绑定数据
    return new kendo.data.DataSource(getDataSourceConfig(idField, readUrl, filter));
}function getTransport(url, type, dataType, contentType) {//数据源地址配置---可用于表格以外kendo UI组件配置 
    return {        contentType: contentType || &#39;application/json&#39;,        dataType: dataType || &#39;json&#39;,        type: type || &#39;POST&#39;,        async: false,        url: url
    };
}function toGridFilter(o) { //转为表 filter 对象
    var filter = {        logic: o.logic || "and",        filters: []
    };    for(var i in o) {        var m = o[i];        if(i === "logic") {            continue;
        }        if($.trim(m) && (typeof m === "string" || typeof m === "number")) {
            filter.filters.push({                field: i,                value: $.trim(m),                operator: "eq"
            });
        } else if(typeof m === "object" && $.trim(m.value)) {            if(m.operator === "in") {                var value = m.value.split("/");
                filter.filters.push({                    field: i,                    value: value,                    operator: m.operator || "in"
                });
            } else {
                filter.filters.push({                    field: i,                    value: $.trim(m.value),                    operator: m.operator || "eq"
                });
            }
        } else if(typeof m === "object" && m.type === "range") {            if(m.start) filter.filters.push({                field: i,                value: m.start,                operator: "gte"
            });            if(m.end) {
                filter.filters.push({                    field: i,                    value: m.end,                    operator: "lte"
                });
            }
        }
    }    return filter;
}//......以下是根据自己的项目进行配置
Copier après la connexion

2. Page

<!DOCTYPE html><html>
    <head>
        <meta charset="UTF-8">
        <title>demo</title> 
        <head>
            <meta charset="UTF-8">
            <title></title>
            <!--以下地址应用根据实际情况使用-->
            <link href="../plugins/bootstrap/css/bootstrap.min.css" rel="stylesheet">
            <link href="../plugins/kendoui/styles/kendo.common-material.min.css" rel="stylesheet">
            <link href="../plugins/kendoui/styles/kendo.material.min.css" rel="stylesheet">
            <script src="../public/js/vue.min.2.1.10.js"></script>
            <script src="../public/js/jquery.3.1.1.min.js"></script>
            <script src="../plugins/kendoui/js/kendo.all.min.js"></script>
            <script src="../plugins/kendoui/js/cultures/kendo.culture.zh-CN.min.js"></script>
            <link href="../public/css/main_layout.css" rel="stylesheet" data-info="这个css是对全局页面样式的覆盖重写">
            <script src="./common.js"></script>
        </head>
    </head>
    <body>
        <div id="app">
            <!--搜索栏+按钮栏-->
            <div class="nav-bar">
                <div class="btn-group">
                    <button type="button" data-target="#modal_theme_primary" class="btn btn-default" @click="addPage()"><i class="icon-plus2"></i>新增</button>
                    <button type="button" class="btn btn-default" @click="del()"><i class="icon-cross2"></i>删除</button>
                </div>
                <div class="input-group" style="float: right;">
                    <input type="text" class="form-control" v-model="search.searchText">
                    <div class="input-group-btn">
                        <button type="button" class="btn btn-default" aria-label="Help" @click="search.searchText=&#39;&#39;"><span class="icon-rotate-cw3"></span></button>
                        <button type="button" class="btn btn-default" @click="onSearch"><i class="icon-search4"></i>搜索</button>
                    </div>
                </div>
            </div>
            <!--主体-->
            <div id="main-content">
                <div class="grid-wrapper">
                    <!--kendo grid-->
                    <div id="gridUser" class="dynamic-height"></div>
                </div>
            </div>
        </div>
        <script>
            /*
             *Object.assign(obj1,obj3,obj3,...) 用来对象合并 这里讲两个配置合并 
             */
            var gridOptions2 = Object.assign(defaultGridOptions, {                dataSource: {},//初始化空数据源对象
                columns: [{//列头配置-详情请转
                    field: "rownumber",                    title: " ",                    template: (dataItem) => app.dataSource.data().indexOf(dataItem) + 1,//<===计算表行序号并显示出来
                    width: 45
                }, {                    title: "用户名",//绑定的ID
                    field: "username",//绑定的文字 
                    template: "<a  title=&#39;修改&#39;  onclick=\"app.addPage(&#39;create?userId=#= userId #&#39;)\" >#= username# </a>",//自定义显示模板
                    width: 200
                }, {                    title: "姓名",                    field: "fName",                    width: 200
                }, {                    title: "邮箱",                    field: "email",                    width: 200
                }, {                    title: "工号",                    field: "number",                    width: 200
                }/**略**/],                selectable: "multiple"//多选----可选值row cell;multiple, row ;multiple cell
            });            var app = new Vue({                el: "#app",                data: {                    search: {                        searchText: "搜索文字",
                    },                    grid: null, //kendo grid对象
                    gridOptions: gridOptions2, //kendo grid对象配置
                    dataSource: {} //kendo grid对象数据源
                },                methods: {                    reLoad: function() {//初始化grid 
                        this.gridOptions.dataSource = this.dataSource = getDataSource("roleId", "./测试数据.json");                        this.grid = $("#gridUser").kendoGrid(this.gridOptions);
                        resizeGrid();
                    },                    addPage: function() {//<====添加页面与修改页面是共用的
                        alert("弹出添加页面遮罩层");
                    },                    del: function() {                        var tmpGrid = this.grid.data("kendoGrid");                        var selectedIds = [];//对象Id集合
                        var rows = tmpGrid.select(); //获取表格选中行
                        if(!rows.length > 0) {
                            alert("请选择");                            return;
                        } 
                        if(!confirm("确定要删除吗?")) return; 
                        rows.each(function(i, row) {                            var dataItem = tmpGrid.dataItem(row);                            if(dataItem) {
                                selectedIds.push(dataItem.userId);
                            }
                        });
                        $.ajax({                            type: "POST",                            url: "/删除地址",                            data: selectedIds,                            success: function(data) {                                /***成功 **/ 
                            },                            error: function() {                                /***错误**/
                            }
                        });
                    },                    onSearch: function() {                        console.log("搜索", this.search, " ", toGridFilter(this.search));
                        app.gridOptions.dataSource.filter(toGridFilter(this.search)); //
                    }
                }
            });
            $(window).resize(function() {//表高度自适应
                resizeGrid();
            });
            app.reLoad();        </script>
    </body> </html>
Copier après la connexion

3. Format des données de test

/**
*测试数据.json
*/{    "total": 40,//总数
    "data": [//返回的当前数据
         {            "userId": "uuid",            "username": "ZHANGSHAN",            "password": "123456",            "email": "ZHANGSHAN@xx.xxx", 
            "number": "XXX001",            "fName": "张三"
        } 
             //.......
    ] 
}
Copier après la connexion

intégration ui de vue2+kendo

Je crois que vous lirez le cas dans cet article Vous maîtrisez la méthode. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture connexe :

Comment créer un composant d'aperçu de téléchargement d'image dans H5

Quelle est la différence entre python3 et JS

Explication détaillée sur l'utilisation de flv.js

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Intégration et utilisation de Spring Boot et base de données NoSQL Intégration et utilisation de Spring Boot et base de données NoSQL Jun 22, 2023 pm 10:34 PM

Avec le développement d’Internet, l’analyse des mégadonnées et le traitement de l’information en temps réel sont devenus un besoin important pour les entreprises. Afin de répondre à de tels besoins, les bases de données relationnelles traditionnelles ne répondent plus aux besoins du développement commercial et technologique. Au lieu de cela, l’utilisation de bases de données NoSQL est devenue une option importante. Dans cet article, nous aborderons l'utilisation de SpringBoot intégré aux bases de données NoSQL pour permettre le développement et le déploiement d'applications modernes. Qu'est-ce qu'une base de données NoSQL ? NoSQL n'est pas seulement du SQL

UniApp réalise une intégration parfaite du framework Vue.js UniApp réalise une intégration parfaite du framework Vue.js Jul 04, 2023 pm 08:49 PM

UniApp réalise l'intégration parfaite du framework Vue.js Introduction : UniApp est un outil de développement multiplateforme basé sur le framework Vue.js. Il peut compiler un projet Vue.js en applications pour plusieurs plateformes différentes, telles que iOS, Android, petits programmes, etc. L'avantage d'UniApp est qu'il permet aux développeurs d'écrire un seul ensemble de code et de s'adapter à plusieurs plates-formes en même temps, accélérant ainsi l'efficacité du développement et réduisant les coûts de développement. Ce qui suit présentera comment utiliser UniApp pour obtenir une intégration parfaite du framework Vue.js.

Changements dans Vue3 par rapport à Vue2 : intégration plus puissante de la bibliothèque de requêtes réseau Changements dans Vue3 par rapport à Vue2 : intégration plus puissante de la bibliothèque de requêtes réseau Jul 08, 2023 pm 08:34 PM

Changements dans Vue3 par rapport à Vue2 : intégration plus puissante de la bibliothèque de requêtes réseau Alors que Vue.js continue de se développer et de se mettre à jour, Vue3, en tant que prochaine version de Vue.js, apporte des changements et des améliorations passionnants. L’un des changements les plus importants concerne l’intégration plus puissante de la bibliothèque de requêtes réseau. Dans Vue2, nous utilisons généralement des bibliothèques tierces telles que axios pour effectuer des requêtes réseau. Dans Vue3, l'équipe de développement de Vue a fourni une bibliothèque de requêtes réseau intégrée, qui nous offre une méthode plus intuitive et flexible.

Conseils pratiques pour intégrer PHPcms avec d'autres systèmes Conseils pratiques pour intégrer PHPcms avec d'autres systèmes Mar 15, 2024 am 08:18 AM

Conseils pratiques pour intégrer PHPcms avec d'autres systèmes Avec le développement continu de la technologie Internet, le domaine du développement de sites Web est devenu plus diversifié et complexe. Dans les projets réels, nous sommes souvent confrontés à des situations dans lesquelles différents systèmes doivent être intégrés, ce qui nécessite que nous ayons certaines compétences et expériences pour résoudre ces problèmes. Cet article présentera quelques conseils pratiques et exemples de code spécifiques pour l'intégration du système PHPcms avec d'autres systèmes afin d'aider les développeurs à mieux faire face aux défis. 1. Principes de base de l'intégration Lors de l'intégration d'un système, il est d'abord nécessaire de

Intégration PHP WebDriver : du débutant au compétent Intégration PHP WebDriver : du débutant au compétent Jun 15, 2023 am 09:52 AM

Avec le développement rapide d'Internet, la demande d'applications Web augmente également et les tests de logiciels, en tant qu'élément important pour garantir la qualité des applications d'entreprise, sont devenus de plus en plus importants. Cependant, les méthodes de test manuelles traditionnelles sont longues, laborieuses et sujettes aux erreurs. Les tests automatisés sont un moyen de résoudre ce problème. Les tests automatisés des applications Web sont devenus un moyen de test courant. Parmi eux, l'utilisation de WebDriver pour les tests automatisés des applications Web est une méthode très populaire. Cet article

Compréhension approfondie des principes et de la mise en œuvre de l'intégration Spring et Mybatis Compréhension approfondie des principes et de la mise en œuvre de l'intégration Spring et Mybatis Feb 20, 2024 am 09:14 AM

Compréhension approfondie des principes d'intégration et de mise en œuvre de Spring et Mybatis 1. Introduction Spring et Mybatis sont deux frameworks open source largement utilisés dans le développement Java. Spring est un framework de développement d'applications complet qui fournit de nombreuses fonctionnalités telles que l'injection de dépendances, l'AOP, etc. Mybatis est un framework de persistance grâce auquel la base de données peut être facilement exploitée. L'intégration des deux permet de mieux exploiter leurs avantages et d'améliorer l'efficacité du développement et la qualité du code. 2. Principe d'intégration Printemps I

Comment intégrer plusieurs ppts ensemble Comment intégrer plusieurs ppts ensemble Mar 20, 2024 pm 11:10 PM

Lors du travail de groupe, différents étudiants feront différentes parties des présentations. Alors, comment fusionner plusieurs présentations en une seule est un problème, c'est-à-dire comment intégrer plusieurs ppt ensemble ? Je pense que de nombreux amis ont rencontré des problèmes similaires, alors comment résoudre de tels problèmes ? Ci-dessous je vais partager avec vous la méthode pour résoudre ce problème, j'espère que cela pourra vous aider. Ouvrez d'abord l'un des nombreux ppts, puis sélectionnez "Réutiliser la diapositive" dans Nouvelle diapositive dans l'onglet Accueil. Cliquez sur « Parcourir » dans les diapositives réutilisées, sélectionnez le ppt réalisé par les autres membres de l'équipe et vous pourrez voir que toutes les diapositives sont affichées. Sélectionnez la position où vous souhaitez insérer la diapositive dans la vue normale à gauche (cliquez simplement sur la diapositive

Utilisez Webman pour mettre en œuvre l'intégration des médias sociaux sur votre site Web Utilisez Webman pour mettre en œuvre l'intégration des médias sociaux sur votre site Web Aug 26, 2023 am 11:43 AM

Utiliser Webman pour mettre en œuvre l'intégration des médias sociaux sur les sites Web Avec l'essor des médias sociaux, de plus en plus de sites Web commencent à intégrer les médias sociaux dans leurs propres plateformes. Cette décision peut non seulement accroître la fidélité des utilisateurs au site Web, mais également accroître la participation et le partage des utilisateurs. Cet article présentera comment utiliser le framework Webman pour mettre en œuvre l'intégration des médias sociaux sur le site Web et sera accompagné d'exemples de code correspondants. Webman est un framework Web développé sur la base du langage Kotlin. Son concept de conception est simple, léger et facile à étendre. Pour utiliser Nous

See all articles