zoukankan      html  css  js  c++  java
  • MVC 模型 视图, 控制器 写 三级联动

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body>
    <select >
    <option value="">品牌</option>
    <option value="">宝马</option>
    <option value="">奔驰</option>
    </select>
    <select >

    <option value="">车型</option>
    <option value="">520LI</option>
    </select>
    <select >

    <option value="">车款</option>
    <option value="">2016 1.8T</option>
    </select>


    </body>
    <script src="js/make_json.js" type="text/javascript" charset="utf-8"></script>
    <script src="js/model_json.js" type="text/javascript" charset="utf-8"></script>
    <script src="js/car_json.js" type="text/javascript" charset="utf-8"></script>
    <script src="js/jquery-1.7.2.min.js" type="text/javascript" charset="utf-8"></script>
    <script type="text/javascript">

    /**
    * 1. 更新车型 根据品牌ID
    * 2. 更新车款 根据车型ID
    * 3..更新数据 根据上一级ID
    *
    * 根据ID可以获取对应的数据
    * 遍历数据生成html代码
    * 根据HTML更新内容
    * 设置默认被选中的元素
    *
    * mvc
    * model 模型 数据模型 数据
    * view 视图 html代码 能看见的 以什么方式显示
    * controller 控制器 逻辑部分 、应该做什么、准备做什么、什么事件触发 什么功能。。。。
    *
    * 控制器-》发命令给 模型,让模型返回数据-》控制器得到数据 -》控制器将数据交给视图显示
    *
    *
    */

    (function($){

    //0.定义三个对象 分别是控制器、模型、视图

    var ctrl = {

    init:function(){

    console.log('初始化');

    this.create_brand();

    this.brand_change();

    this.model_change();


    },

    //创建品牌列表
    create_brand:function(){

    //调用模型方法获取品牌数据

    var data = model.get_brand();

    // 将数据交给视图,让视图来显示

    view.show_brand(data);

    },

    //创建车型列表

    create_model:function(){

    //获取ID
    var id = $('select:first').val();

    //调用模型根据ID获取对应的车型数据

    var data = model.get_model(id);

    //将数据交给视图让其显示

    view.show_model(data);

    //车型创建完之后立即创建车款

    ctrl.create_car();

    },

    create_car:function(){
    //获取ID
    var id = $('select:eq(1)').val();

    //调用模型根据ID获取对应的车型数据

    var data = model.get_car(id);

    //将数据交给视图让其显示

    view.show_car(data);
    },


    //品牌切换事件
    brand_change:function(){

    var self = this;

    //品牌变化事件
    $('select:first').change(function(){

    self.create_model()
    })

    },



    //车型切换事件
    model_change:function(){
    var self = this;
    //品牌变化事件
    $('select:eq(1)').change(function(){

    self.create_car()

    })

    }


    };


    var model = {
    //获取品牌数据
    get_brand:function(){

    return make_json
    },

    //获取车型数据

    get_model:function(id){

    return model_json[id]

    },
    //获取车款数据

    get_car:function(id){

    return car_json[id]

    }

    };


    var view = {
    // 根据数据及选择器 创建html代码并更新到对应的元素上
    create_options:function(data,selector){

    //1.遍历生成html代码

    var html = '';

    $.each(data, function() {

    html+='<option value="'+this.id+'">'+this.name+'</option>'

    });

    $(selector).html(html)


    },

    //根据品牌数据显示品牌列表
    show_brand:function(data){

    this.create_options(data,'select:first');

    },

    //根据车型数据显示车型列表
    show_model:function(data){

    this.create_options(data,'select:eq(1)');

    },
    //根据车款数据显示车款列表
    show_car:function(data){

    this.create_options(data,'select:last');

    }

    };

    //1.执行初始化

    ctrl.init();


    })(jQuery);

    </script>
    </html>
  • 相关阅读:
    web前端性能意义、关注重点、测试方案、优化技巧
    前端性能优化和规范
    高性能网站性能优化与系统架构(ZT)
    【转载】12306铁道部订票网站性能分析
    构架高性能WEB网站的几点知识
    减少图片HTTP 请求的方案
    网站性能优化:动态缩略图技术实现思路
    不错的jquery插件
    jQuery 遍历
    JavaScript slice() 方法
  • 原文地址:https://www.cnblogs.com/shuaishuaidejun/p/6572370.html
Copyright © 2011-2022 走看看