vue三级联动,不发ajax请求

<template>    <div class="city-select" id="city">        <select v-model="selectedProvince" name="province">            <option v-for="(item, index) in provinces"                    v-if="item.level === 1"                    :value="item">                {{ item.name }}      </option>        </select>        <select v-model="selectedCity" name="city">            <option                    v-for="(item, index) in cities"                    :value="item">                {{ item.name }}      </option>        </select>        <select v-model="selectedBlock" name="block">            <option                    v-for="(item, index) in blocks"                    :value="item">                {{ item.name }}      </option>        </select>    </div></template><script>    import provinces from ‘./../../assets/js/city‘    import Vue from ‘vue‘    export default {        name: ‘city‘,        created() {            // 数据初始化,默认选中北京市,默认选中第一个;北京市数据为总数据的前18个            let beijing = this.provinces.slice(0, 19);            this.cities = beijing.filter(item => {                if (item.level === 2) {                    return true                }            });            this.selectedCity = this.cities[0];            this.blocks = beijing.filter(item => {                if (item.level === 3) {                    return true                }            });            this.selectedBlock = this.blocks[0]        },        watch: {            selectedProvince(newVal, oldVal) {                // 港澳台数据只有一级,特殊处理                if (newVal.sheng === ‘71‘ || newVal.sheng === ‘81‘ || newVal.sheng === ‘82‘) {                    this.cities = [newVal];                    this.blocks = [newVal]                } else {                    this.cities = this.provinces.filter(item => {                        if (item.level === 2 && item.sheng && newVal.sheng === item.sheng) {                            return true                        }                    })                }                var _this = this;                // 此时在渲染DOM,渲染结束之后再选中第一个                Vue.nextTick(() => {                    _this.selectedCity = _this.cities[0];                    _this.$emit(‘input‘, _this.info)                })            },            selectedBlock() {                var _this = this;                Vue.nextTick(() => {                    _this.$emit(‘input‘, _this.info)                })            },            selectedCity(newVal) {                // 选择了一个市,要选择区了 di是城市的代表,sheng                if (newVal.sheng === ‘71‘ || newVal.sheng === ‘81‘ || newVal.sheng === ‘82‘) {                    this.blocks = [newVal];                    this.cities = [newVal]                } else {                    this.blocks = this.provinces.filter(item => {                        if (item.level === 3 && item.sheng && item.sheng == newVal.sheng && item.di === newVal.di && item.name !== ‘市辖区‘) {                            return true                        }                    })                }                var _this = this;                Vue.nextTick(() => {                    _this.selectedBlock = _this.blocks[0];                    // 触发与 v-model相关的 input事件                    _this.$emit(‘input‘, _this.info)                })            }        },        computed: {            info() {                return {                    province: this.selectedProvince,                    city: this.selectedCity,                    block: this.selectedBlock                }            }        },        data() {            return {                selectedProvince: provinces[0],                selectedCity: 0,                selectedBlock: 0,                cities: 0,                provinces,                blocks: 0            }        }    }</script>city.js部分格式

				
时间: 2024-08-23 15:30:31

vue三级联动,不发ajax请求的相关文章

JS 点击元素发ajax请求 打开一个新窗口

JS 点击元素发ajax请求 打开一个新窗口 经常在项目中会碰到这样的需求,点击某个元素后,需要发ajax请求,请求成功以后,开发需要把链接传给前端(或者说请求成功后打开新窗口),前端需要通过新窗口打开这个链接,其实这样的原理大家可能觉得非常简单,想起来非常简单,用JS中的window.open就可以实现打开新的窗口,或者点击div元素,发ajax请求成功后,动态把链接传给a标签,然后再触发a标签事件,也可以实现,对吧?曾几何时,我也曾经把这样的问题发到JS群里面去,很多JS社区朋友说 龙恩 这

springmvc 前端 发ajax请求的几种方式

一.传json单值或对象 1.前端 1 var data = {'id':id,'name':name}; 2 $.ajax({ 3 type:"POST", 4 url:"user/saveUser", 5 dataType:"json", 6 //contentType:"application/json", //不能添加这个头 7 data:data, //这里不能进行JSON.stringify,发送请求的数据在:fo

vue中使用vue-resource发送ajax请求

1 get请求 html代码: 界面如下: js代码: 2 post请求 html代码: 界面: js代码: 3 jsonp请求 原文地址:http://blog.51cto.com/11871779/2131133

vue发送ajax请求

一.vue-resource 1.简介 一款vue插件,用于处理ajax请求,vue1.x时广泛应用,现不被维护. 2.使用流程 step1:安装 [命令行输入] npm install vue-resource --save step2:引入 [main.js] // 引入vue-resource import VueResource from 'vue-resource' // 使用vue-resource Vue.use(VueResource) step3:编码 [格式:] this.$

vue中的三级联动

1.template里面的内容 2.js里面的内容 3.函数怎么写? 这是一个省市区的三级联动,首先你要传递中国的id,这样才能获取到所有的省份,所以在vue的项目中,我需要发一次进页面就请求(来得到所有省份的数据) 4.现在一级的数据已经获取到了,需要获取二三级的函数, 这样,就已经完成了一个vue的三级联动的效果

AJAX 三级联动例题

用ajax三级联动写一个关于省市区下拉列表的联动 数据库中的表: id是这条数据的主键,dname是地区名称,parentid是父级id 页面效果: 先实例化一个district类 package com.hanqi.model; public class District { private String id; private String dname; private String parentid; public District(String id, String dname, Str

ajax三级联动下拉菜单

ajax写三级联动,先写一个文件类吧,以后用的时候直接调用即可: 来找一张表: 实现: 中国地域的三级联动:省.市.区: 图: 说一下思路: (1)当用户选择省份的时候触发事件,把当前的省份的id通过ajax发出请求传递到服务端的程序中 (2)比如取中国地域,中国是0001,那么自带号为0001的便是中国地域: 北京的代号为11,那么子代号为11的便是北京时的市区, 也就是说根据主代号查询子代号: (3)服务端根据客户端的请求,查询数据库,并按照一定的格式返回给客户端 显示页面非常简单,只需要一

ajax连接数据库加载+三级联动

ajax连接数据库加载 ajax是指一种创建交互式网页应用的网页开发技术. AJAX = 异步JS和XML(标准通用标记语言的子集). AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页页面. 优点:是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容. 不需要任何浏览器插件,但需要

asp.net(c#)用Ajax调用web 服务实现省市县三级联动

1.先说说硬件配置,我最开始是在Win7(I7 4770,8G RAM,2T硬盘)里装ubuntu10.10 64位系统(4G RAM,200G 硬盘)进行源码编译,大概花了3个多小时.而且还多次出现outofmemoryerror 错误.最后将硬件升级为I7 4770.16G内存.2T硬盘,不装虚拟机,直接跑Ubuntu 10.10系统,Swap分区为16G,编译一次大概花了40分钟,没有报任何错误. 所以不推荐在虚拟机里面跑. 2.根据官方文档配置编译环境: 官方文档说的是在"发布包/Sof