Heim Web-Frontend js-Tutorial ui-Integration von vue2+kendo

ui-Integration von vue2+kendo

Mar 12, 2018 am 09:47 AM
整合

Dieses Mal werde ich Ihnen die UI-Integration von vue2+kendo vorstellen. Was sind die Vorsichtsmaßnahmen bei der Verwendung der UI-Integration von vue2+kendo?

/*
*  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;
}//......以下是根据自己的项目进行配置
Nach dem Login kopieren

2. Seite

<!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>
Nach dem Login kopieren

3. Testdatenformat

/**
*测试数据.json
*/{    "total": 40,//总数
    "data": [//返回的当前数据
         {            "userId": "uuid",            "username": "ZHANGSHAN",            "password": "123456",            "email": "ZHANGSHAN@xx.xxx", 
            "number": "XXX001",            "fName": "张三"
        } 
             //.......
    ] 
}
Nach dem Login kopieren

ui-Integration von vue2+kendo

Ich glaube, Sie werden das lesen Fall in diesem Artikel Sie beherrschen die Methode. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Verwandte Lektüre:

So erstellen Sie eine Bild-Upload-Vorschaukomponente in H5

Was ist der Unterschied zwischen Python3 und JS

Detaillierte Erklärung zur Verwendung von flv.js

Das obige ist der detaillierte Inhalt vonui-Integration von vue2+kendo. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Integration und Nutzung von Spring Boot und NoSQL-Datenbank Integration und Nutzung von Spring Boot und NoSQL-Datenbank Jun 22, 2023 pm 10:34 PM

Mit der Entwicklung des Internets sind Big-Data-Analyse und Echtzeit-Informationsverarbeitung zu einem wichtigen Bedarf für Unternehmen geworden. Um diesen Anforderungen gerecht zu werden, erfüllen herkömmliche relationale Datenbanken nicht mehr die Anforderungen der Geschäfts- und Technologieentwicklung. Stattdessen ist die Verwendung von NoSQL-Datenbanken zu einer wichtigen Option geworden. In diesem Artikel besprechen wir die Verwendung von SpringBoot, das in NoSQL-Datenbanken integriert ist, um die Entwicklung und Bereitstellung moderner Anwendungen zu ermöglichen. Was ist eine NoSQL-Datenbank? NoSQL ist nicht nur SQL

UniApp realisiert die perfekte Integration des Vue.js-Frameworks UniApp realisiert die perfekte Integration des Vue.js-Frameworks Jul 04, 2023 pm 08:49 PM

UniApp realisiert die perfekte Integration des Vue.js-Frameworks. Einführung: UniApp ist ein plattformübergreifendes Entwicklungstool, das auf dem Vue.js-Framework basiert. Es kann ein Vue.js-Projekt in Anwendungen für mehrere verschiedene Plattformen wie iOS, Android, kompilieren. kleine Programme etc. Der Vorteil von UniApp besteht darin, dass Entwickler nur einen Satz Code schreiben müssen, um sich gleichzeitig an mehrere Plattformen anzupassen, was die Entwicklungseffizienz beschleunigt und die Entwicklungskosten senkt. Im Folgenden wird erläutert, wie Sie mit UniApp eine perfekte Integration des Vue.js-Frameworks erreichen

Änderungen in Vue3 im Vergleich zu Vue2: Leistungsstärkere Integration der Netzwerkanforderungsbibliothek Änderungen in Vue3 im Vergleich zu Vue2: Leistungsstärkere Integration der Netzwerkanforderungsbibliothek Jul 08, 2023 pm 08:34 PM

Änderungen in Vue3 im Vergleich zu Vue2: Stärkere Integration der Netzwerkanforderungsbibliothek. Während Vue.js weiter weiterentwickelt und aktualisiert wird, bringt Vue3 als nächste Version von Vue.js einige spannende Änderungen und Verbesserungen mit sich. Eine der bedeutendsten Änderungen ist die leistungsfähigere Integration der Netzwerkanforderungsbibliothek. In Vue2 verwenden wir normalerweise Bibliotheken von Drittanbietern wie axios, um Netzwerkanfragen zu stellen. In Vue3 hat das Vue-Entwicklungsteam eine integrierte Netzwerkanfragebibliothek bereitgestellt, die uns eine intuitivere und flexiblere Methode bietet.

Praktische Tipps zur Integration von PHPcms mit anderen Systemen Praktische Tipps zur Integration von PHPcms mit anderen Systemen Mar 15, 2024 am 08:18 AM

Praktische Tipps zur Integration von PHPcms mit anderen Systemen Mit der kontinuierlichen Weiterentwicklung der Internettechnologie ist der Bereich der Website-Entwicklung vielfältiger und komplexer geworden. In tatsächlichen Projekten sind wir häufig mit Situationen konfrontiert, in denen verschiedene Systeme integriert werden müssen, was von uns bestimmte Fähigkeiten und Erfahrungen zur Lösung dieser Probleme erfordert. In diesem Artikel werden einige praktische Tipps und spezifische Codebeispiele für die Integration des PHPcms-Systems mit anderen Systemen vorgestellt, um Entwicklern dabei zu helfen, Herausforderungen besser zu bewältigen. 1. Grundprinzipien der Integration Bei der Durchführung der Systemintegration ist zunächst Folgendes erforderlich

PHP-WebDriver-Integration: vom Anfänger bis zum Experten PHP-WebDriver-Integration: vom Anfänger bis zum Experten Jun 15, 2023 am 09:52 AM

Mit der rasanten Entwicklung des Internets steigt auch die Nachfrage nach Webanwendungen und Softwaretests als wichtiger Bestandteil der Qualitätssicherung von Unternehmensanwendungen werden immer wichtiger. Allerdings sind herkömmliche manuelle Testmethoden zeitaufwändig, mühsam und fehleranfällig. Automatisiertes Testen ist eine Möglichkeit, dieses Problem zu lösen. Das automatisierte Testen von Webanwendungen ist zu einer gängigen Testmethode geworden. Unter ihnen ist die Verwendung von WebDriver zum automatisierten Testen von Webanwendungen eine sehr beliebte Methode. Dieser Artikel

Vertiefendes Verständnis der Prinzipien und Implementierung der Spring- und Mybatis-Integration Vertiefendes Verständnis der Prinzipien und Implementierung der Spring- und Mybatis-Integration Feb 20, 2024 am 09:14 AM

Vertiefendes Verständnis der Integrationsprinzipien und Implementierung von Spring und Mybatis 1. Einführung Spring und Mybatis sind zwei Open-Source-Frameworks, die in der Java-Entwicklung weit verbreitet sind. Spring ist ein umfassendes Framework für die Anwendungsentwicklung, das viele Funktionen wie Abhängigkeitsinjektion, AOP usw. bietet. Mybatis ist ein Persistenz-Framework, über das die Datenbank einfach betrieben werden kann. Durch die Integration der beiden können ihre Vorteile besser genutzt und die Entwicklungseffizienz sowie die Codequalität verbessert werden. 2. Integrationsprinzip Frühling I

So integrieren Sie mehrere ppts zusammen So integrieren Sie mehrere ppts zusammen Mar 20, 2024 pm 11:10 PM

Bei Gruppenarbeiten erstellen verschiedene Schüler unterschiedliche Teile einer Präsentation. Wie kann man also mehrere Präsentationen zu einer zusammenführen, d. h. wie lassen sich mehrere Präsentationen zusammenfügen? Ich glaube, viele Freunde sind auf ähnliche Probleme gestoßen. Wie kann man solche Probleme lösen? Im Folgenden werde ich Ihnen die Methode zur Lösung dieses Problems vorstellen und hoffe, dass sie Ihnen helfen kann. Öffnen Sie zunächst eine von mehreren ppts und wählen Sie dann „Folie wiederverwenden“ unter „Neue Folie“ auf der Registerkarte „Startseite“. Klicken Sie in den wiederverwendeten Folien auf „Durchsuchen“, wählen Sie die von anderen Teammitgliedern erstellte PPT aus und Sie können sehen, dass alle Folien angezeigt werden. Wählen Sie links in der Normalansicht die Position aus, an der Sie die Folie einfügen möchten (einfach auf die Folie klicken).

Verwenden Sie Webman, um die Integration sozialer Medien auf Ihrer Website zu implementieren Verwenden Sie Webman, um die Integration sozialer Medien auf Ihrer Website zu implementieren Aug 26, 2023 am 11:43 AM

Verwendung von Webman zur Implementierung der Social-Media-Integration auf Websites Mit dem Aufkommen von Social Media beginnen immer mehr Websites, Social Media in ihre eigenen Plattformen zu integrieren. Dieser Schritt kann nicht nur die Benutzerbindung der Website erhöhen, sondern auch die Benutzerbeteiligung und den Austausch erhöhen. In diesem Artikel wird die Verwendung des Webman-Frameworks zur Implementierung der Social-Media-Integration auf der Website vorgestellt und entsprechende Codebeispiele bereitgestellt. Webman ist ein Web-Framework, das auf der Kotlin-Sprache basiert. Sein Designkonzept ist einfach, leichtgewichtig und leicht zu erweitern. Wir nutzen

See all articles