js数据层中间件单页运用简单构思和应用案例

案例1:

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    <title></title>

     <script src="jquery-2.2.1.min.js" type="text/javascript"></script>

     <script type="text/javascript">

        $(document).ready(function () {

            //定义一个controller

            var piliController = {

                //选择视图

                start: function () {

                    this.view.start();

                },

                //将用户操作映射到模型更新上

                set: function (name) {

                    this.model.setPerson(name);

                }

            };

            piliController.model = {

               //此数据从中间数据层拿json.data(经中间件(简单做法封转一个页面所有的业务请求接口一个ajax请求回调搞定)批量查询后的静态资源)并处理填充

                piliKV: {

                    '叶小钗': '刀狂剑痴',

                    '一页书': '百世经纶',

                    '素还真': '清香白莲'

                },

                curPerson: null,

                //数据模型负责业务逻辑和数据存储

                setPerson: function (name) {

                    this.curPerson = this.piliKV[name] ? name : null;

                    this.onchange();

                },

                //通知数据同步更新

                onchange: function () {

                    piliController.view.update();

                },

                //相应视图对当前状态的查询

                getPiliAction: function () {

                    return this.curPerson ? this.piliKV[this.curPerson] + this.curPerson : '???';

                }

            };

            //=======================================================================

            // 以下为界面代码,当要调整界面,改这里就行啦~~~

            piliController.view = {

                //用户触发change事件

                start: function () {

                    $('#pili').change(this.onchange);

                },

                onchange: function () {

                    piliController.set($('#pili').val());

                },

                update: function () {

                    $('#end').html(piliController.model.getPiliAction());

                }

            };

            //=======================================================================

            piliController.start();

        });

    </script>

</head>

<body>

    <select id="pili">

     <option value="叶小钗">叶小钗</option>

        <option value="一页书">一页书</option>

        <option value="素还真">素还真</option>

    </select>

    <div id="end"></div>

</body>

</html>

案例2

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="utf-8" />

    <title></title>

    <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>

    <script>

        $(function () {

            var Countries = function () { }

            Countries.prototype = {

                _items: [],

                _getData: function (success) {

                    //此数据从中间数据层拿json.data(经中间件(简单做法封转一个页面所有的业务请求接口一个ajax请求回调搞定)批量查询后的静态资源)并处理填充

                    var items = [

                       { id: 0, name: '中国' },

                       { id: 1, name: '日本' },

                       { id: 2, name: '美国' }

                    ];

                    $.extend(this._items, items);

                    success(items);

                },

                //Events

                on_selected: $.Callbacks(),

                on_inserted: $.Callbacks(),

                //Methods

                select: function () {

                    var self = this;

                    this._getData(function (items) {

                        self.on_selected.fire({

                            sender: self,

                            items: items

                        });

                    });

                },

                insert: function (item) {

                    var self = this;

                    this._items.push(item);

                    self.on_inserted.fire({ sender: self, item: item });

                }

            }

            //=======================================================================

            // 以下为界面代码,当要调整界面,改这里就行啦~~~

            var countries = new Countries();

            countries.on_selected.add(function (args) {

                $(args.items).each(function () {

                    $('#countries').append($('<option>').attr('value', this.id).text(this.name));

                });

            });

            countries.on_inserted.add(function (args) {

                $('#countries').append($('<option selected="selected">').attr('value', args.item.id).text(args.item.name));

            });

            var id = 10;

            $('#btnAdd').click(function () {

                countries.insert({ id: ++id, name: $('#countryName').val() });

            });

            countries.select();

            //=======================================================================

        });

    </script>

</head>

<body>

    <select id="countries"></select>

    <div>

        <input id="countryName" /><button id="btnAdd">添加列表item</button>

    </div>

</body>

</html>

时间: 2024-08-15 21:30:07

js数据层中间件单页运用简单构思和应用案例的相关文章

第1个Android应用程序 Android制作简单单页导航_Android

本例子演示如何添加一个简单的单页导航,在此基础上,再演示如何在第2个页面中显示第1个页面中拨打过的所有电话号码. (1)通过该例子理解Android App的基本架构. (2)通过该例子理解实现Android多屏幕导航的基本技术. 本例子只是为了让我们对Android App开发有一个较全面的感性认识,读者不必一开始就纠结于代码中的细节问题,涉及到的相关概念在后面还会分别介绍. 运行截图 运行截图(Api19.Api21.Api23的实现代码都相同): 界面操作 单击"将文本转换为数字"

超实用的单页网站设计指南

  这篇好文将给同学们科普何时能用单页网站,设计时有哪些技巧,有哪些优秀范例可以借鉴,以及文末推荐一大波专业的单页网站资源,干货份量绝对足,充电时间到 >>> @十萬個為什麽 :单页设计,是一项处理小型网站的绝佳技巧,甚至有些网站你可能认为一张页面搞不定,也同样适用.从易于维护,到减少带宽占用,使用单页网站的好处不胜枚举. 假如你应对的是个小型网站,通常只有几个页面的那种,可以考虑使用单页设计,看看它是否能简化项目,对用户更加友好.继续阅读,你将了解它的益处,何时使用(或不该使用),还有

require.js配合插件text.js实现最简单的单页应用程序_javascript技巧

写了一个测试代码,用require.js配合它的一个插件text.js实现了最简单的单页应用程序,简单的记录一下,方便以后复习, git地址:https://github.com/lily1010/requireSPA 下面来看一下目录 从上面项目可以看出,我将css单独抽离出去,实现了按需加载,即加载test1.html时会加载test1.css,加载test2.html时会加载test2.css. 一.先来看入口index.html代码  <!DOCTYPE html> <html&

js获取form表单所有数据的简单方法_javascript技巧

在HTML中用js获取通过GET.POST方法(就是在网址后加?a=b&c=d之类)传过来的表单值. 针对大家常用的获取表单方式,很多时候都是在重复的写一些代码,今天给大家贴出来的代码可以作为公用方法直接调用.可以提高大家的开发效率. Js代码 <script type="text/javascript"> //获取指定form中的所有的<input>对象 function getElements(formId) { var form = documen

使用Vue.js创建一个时间跟踪的单页应用_javascript技巧

Vue.js很简单.正因为如此简单,人们常常认为其适合于小项目.虽然真正的Vue.js核心知识只是一个视图层库,实际上有一组工具,将使您能够使用Vue.js构建完整的大规模SPA(单页应用程序). SPA应用可以在不完全重新加载网页,产生一个更流畅的用户体验到的用户交互响应.还有好的副作用,SPA还鼓励后端专注于展示数据端点,这使得整体架构更加分离,并且对于其他类型的客户端可能是可重用的. 从开发人员的角度来看,SPA和传统的后端呈现应用程序之间的主要区别是,我们必须将客户端视为具有自己架构的应

数据党证实:淘宝客API站已死单页站重新崛起?

淘宝客API站点,大家都不陌生.这种靠淘宝的API接口调用百万级数据而形成的站曾一度辉煌.曾几何时,有多少站长白天挂上API站,晚上数钱笑得乐呵呵.但随着使用API接口数据的人越来越多,API就那么一份,用的人却成千上万.最终,大量的同质化极严重的数据在互联网上面像泡沫一样.百度在6.28K站事件中,终于来了一场大清洗.淘宝客API站点是不是穷途末路了?现在的淘宝客都在用什么模式来做站? 我自己本身是一个淘宝客站群操作者.我需要清晰知道,在6.28K站事件之后,到底还有什么站可以站得稳,可以做得

require简单实现单页应用程序(SPA)_javascript技巧

写了一个测试代码,用require.js配合它的一个插件text.js实现了最简单的单页应用程序,简单的记录一下,方便以后复习, git地址:https://github.com/lily1010/requireSPA 下面来看一下目录 从上面项目可以看出,我将css单独抽离出去,实现了按需加载,即加载test1.html时会加载test1.css,加载test2.html时会加载test2.css. 一 先来看入口index.html代码 <!DOCTYPE html> <html&g

第1个Android应用程序 Android制作简单单页导航

本例子演示如何添加一个简单的单页导航,在此基础上,再演示如何在第2个页面中显示第1个页面中拨打过的所有电话号码. (1)通过该例子理解Android App的基本架构. (2)通过该例子理解实现Android多屏幕导航的基本技术. 本例子只是为了让我们对Android App开发有一个较全面的感性认识,读者不必一开始就纠结于代码中的细节问题,涉及到的相关概念在后面还会分别介绍. 运行截图 运行截图(Api19.Api21.Api23的实现代码都相同): 界面操作 单击"将文本转换为数字"

简单大气的单页网页设计案例赏析

  这个网站以天空星座为主题,再用色彩营造出一种神秘的气氛,但其特点并不在此,而是在网站的导航设计中.大多数单页网页的导航会设置在顶部,或是首屏的底部,很少会放在侧边.由于单页式的网页设计想要体现的就是大气整洁,所以肯定会选用宽屏,而侧边导航又会减少页面的视觉宽度,因此侧边导航很少会在单页网页中出现.用户点击导航后,页面就会随之变化,简洁明了. 这是一个小学的介绍网站,显示的案例是网站的整个页面.网站整体简短可爱,手绘的设计风格和鲜亮的黄色更是充满了童趣.为了不让页面显得过于臃肿,设计师把导航拆