程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> 界面與數據分離怎麼做?

界面與數據分離怎麼做?

編輯:更多關於編程

     1、界面與數據的分離,必須體現在代碼上,界面的代碼歸界面的代碼,數據的代碼歸數據的代碼,兩者必須泾渭分明。

    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) {
                        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">添加</button>
        </div>
    </body>
    </html>

    代碼是可以直接Copy運行的,界面如下圖:

    界面與數據分離怎麼做? 三聯

    上面的代碼,真正做到了界面與數據的分離:

    1、在數據訪問的代碼,沒有一行涉及到UI的,如果有一行,哪怕一行涉及到,都不能算是界面與數據分離。(簡單點說,就是數據訪問的代碼,不能對UI有依賴)

    2、當界面需求發生變化,只要修改界面的代碼就可以了。

    3、數據訪問的代碼會不會發生變化?一般來說,這個是很少會發生變化的(相比界面)。假如發生變化了,需要修改數據訪問的代碼,所作的修改並不會影響到界面的代碼。

    關於代碼,我就不作解釋了,相信有點基礎的同學都能看懂

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved