成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

cola-ui的使用

hellowoody / 2047人閱讀

摘要:采用了精簡(jiǎn)的架構(gòu),在確保靈活性的同時(shí)盡可能降低對(duì)開發(fā)者的技術(shù)要求。遵循的策略,特別適合于移動(dòng)設(shè)備應(yīng)用開發(fā)。由定義的前端模型用來(lái)標(biāo)志當(dāng)前字段的前端顯示文本,使用取到當(dāng)前字段對(duì)應(yīng)的當(dāng)前語(yǔ)言的國(guó)際化翻譯。

[toc]

官方:http://www.cola-ui.com

教程位置:http://www.cola-ui.com/guide/model

API: http://www.cola-ui.com/api/cola.html , http://legacy.cola-ui.com

組件地址:http://www.cola-ui.com/docs/button

源碼地址:https://github.com/Cola-Org/cola-ui

產(chǎn)品簡(jiǎn)介

Cola UI是支持雙向數(shù)據(jù)綁定的一站式前端UI框架。采用了精簡(jiǎn)的MVVM架構(gòu),在確保靈活性的同時(shí)盡可能降低對(duì)開發(fā)者的技術(shù)要求。

Cola UI遵循Mobile First的策略,特別適合于移動(dòng)設(shè)備應(yīng)用開發(fā)。

Cola UI整合了jQuery和Semantic UI,同時(shí)提供更多常用的List、Table、Tree等高級(jí)控件。

開始

以上內(nèi)容都是通過(guò)cola-ui官網(wǎng)獲得的資料,絕大多數(shù)的開發(fā)內(nèi)容可以參考cola-ui官網(wǎng)提供的API進(jìn)行查閱

本文檔主要針對(duì)于camsi工程中用到的功能或特性,且可能不存在于cola-ui官網(wǎng)提供的API進(jìn)行整理和說(shuō)明

組成結(jié)構(gòu)

通常要基于camsi工程在瀏覽器渲染出來(lái)的頁(yè)面由三個(gè)部分組成,例如:simple01.jade、M.js、simple01Model.js

Jade

Jade 是一個(gè)高性能的模板引擎,它深受 Haml影響,它是用 JavaScript 實(shí)現(xiàn)的,并且可以供 [Node](http://nodejs.org/) 使用,你也可以[在此試用](http://naltatis.github.io/jade-syntax-docs/),這里推薦[Jade入門中文文檔](http://www.nooong.com/docs/jade_chinese.htm)

extends /_page
block body
    v-box
        flex-box
            .content(style="overflow: auto")
                c-table(bind="simple01s" dataType="Simple01")
                    column(property="name")
append scripts
    script(src="simple01Model.js")
    script(src="simple01.js")

dataType的值應(yīng)該與Js中定義的dataType的值以及Model.js中定義的dataType的值相等

Js

不做描述

cola(function(model) {
    model.dataType($DataType.Simple01);
    model.describe("simple01s", {
        dataType : "Simple01",
        provider : {
            url : "controller/simple01Service/findPagination?from={{$from}}&limit={{$limit}}",
            pageSize : 10,
            sendJson : true,
            loadMode: "manual"
        }
    });
    model.set("title", "[(#{simple01})]");
    model.action({
        test : function() {
            cola.alert("test")
        }
    });
});

所有正規(guī)的操作包括事件都應(yīng)該編寫在cola(function(model) { })中,其中首先需要使用dataType定義當(dāng)前Js中所有用到的DataType,使用model.describe交互后臺(tái)數(shù)據(jù)到當(dāng)前指定model,使用model.set("", "")向model交互數(shù)據(jù),頁(yè)面所有用到的事件方法應(yīng)該存在于model.action({})中。

Model.js

由cola-ui定義的前端模型

var $DataType = {
        Simple01: {
        name: "Simple01",
        properties : {
            name : {
                caption : "[(#{name})]",
                dataType : "string"
            }
        }
    }
};

caption用來(lái)標(biāo)志當(dāng)前字段的前端顯示文本,使用[(#{ })]取到當(dāng)前字段對(duì)應(yīng)的當(dāng)前語(yǔ)言的國(guó)際化翻譯。

表單相關(guān) 表單對(duì)國(guó)際化的處理
在正常情況下,dataType可能會(huì)被公用,然后每個(gè)字段在每個(gè)不同的地方顯示的文本標(biāo)識(shí)不一樣,這時(shí)候可以使用caption屬性進(jìn)行操作,例如:caption=ll.l("name")前面提到在Js中國(guó)際化使用的是[(#{ })]
表單對(duì)日期格式的處理
通常需要將當(dāng)前日期字段進(jìn)行格式化只需要下面代碼即可:
field(property="birthday")
    label
    c-datepicker(displayFormat="yyyy-MM-dd" inputFormat="yyyy-MM-dd")

將datatype類型為Date的birthday字段的文本顯示和選擇的日期格式調(diào)整為"yyyy-MM-dd"

表單對(duì)枚舉值的處理
我們經(jīng)常會(huì)把一些常規(guī)的數(shù)據(jù)做成枚舉值存放在數(shù)據(jù)庫(kù),并把頁(yè)面的文本輸入框改變成為下拉項(xiàng)

頁(yè)面元素

field(property="status")
    label
    c-dropdown(c-items="dictionary("10000")")

引入Js

script(src=basecodeCP + "controller/basecode/codeDetail/findCodeDetails?baseCodeIds=10000")

或者

script(src="controller/basecode/codeDetail/findCodeDetails?baseCodeIds=10000")

這樣頁(yè)面會(huì)去加載枚舉值代碼為10000的對(duì)應(yīng)status存放的id對(duì)應(yīng)的文本顯示到當(dāng)前字段,并為當(dāng)前字段提供下拉項(xiàng)

表單對(duì)文本域的處理
類似于備注,通常都是用文本框來(lái)顯示
fields.cols-1
    field(property="remark")
        label
        c-textarea(rows="3")

首先定義當(dāng)前字段獨(dú)占一列,使用c-textarea(rows="3")表名當(dāng)前字段獨(dú)占三列

表單對(duì)只讀的處理
正常場(chǎng)景并不是表單中列出的所有的字段都是手動(dòng)輸入的,比如ID,我們可以使用readOnly="true"對(duì)每個(gè)field進(jìn)行只讀控制,也可以將readOnly="true"放在c-form屬性里面來(lái)控制整個(gè)表單只讀
表單對(duì)省市縣級(jí)聯(lián)的處理

Jade

field(property="country"
    label
    c-dropdown(c-items="dictionary("CountryCode")" onSelectData="onCountrySelect")
(property="province" caption=ll.l("province") c-readOnly="queryCondition.country != "CHN"")
    label
    c-dropdown(c-items="provinces" textProperty="name" assignment="province=kind" onSelectData="onProvinceSel")
field(property="city" caption=ll.l("city") c-readOnly="queryCondition.country != "CHN"")
    label
    c-dropdown(c-items="cities" textProperty="name" assignment="city=kind" beforeOpen="beforeCityOpen" onSelectData="onCitySel")
field(property="county" caption=ll.l("county") c-readOnly="queryCondition.country != "CHN"")
    label
    c-dropdown(c-items="counties" textProperty="name" assignment="county=kind" beforeOpen="beforeCountyOpen")

引入數(shù)據(jù)字典

script(src="controller/basecode/codeDetail/findCodeDetails?baseCodeIds=CountryCode")

Js

cola(function(model) {
    model.describe("provinces", {
        provider: {
            url: "controller/basecode/codeDetail/findCachedCodeDetails",
            parameter: {
                baseCodeId: "Address",
                parentId: "NULL"
            }
        }
    });
    model.set("title", "[(#{simple01})]");
    model.set("queryCondition", {"country":"CHN"});
    model.action({
        beforeCityOpen: function () {
            var province = model.get("queryCondition.province");
            $.ajax("controller/basecode/codeDetail/findCachedCodeDetails?baseCodeId=Address&parentId=" + province, {
                type: "get", async: false
            }).done(function (result) {
                if (result) {
                    model.set("cities", result);
                }
            });
        },
        beforeCountyOpen: function () {
            var city = model.get("queryCondition.city");
            $.ajax("controller/basecode/codeDetail/findCachedCodeDetails?baseCodeId=Address&parentId=" + city, {
                type: "get", async: false
            }).done(function (result) {
                if (result) {
                    model.set("counties", result);
                }
            });
        },
        onProvinceSel: function (self, arg) {
            var queryCondition = model.get("queryCondition");
            if(queryCondition.get("province") != arg.data.get("kind")){
                queryCondition.set("city", "");
                queryCondition.set("county", "");
            }
        },
        onCitySel: function (self, arg) {
            var queryCondition = model.get("queryCondition");
            if(queryCondition.get("city") != arg.data.get("kind")){
                queryCondition.set("county", "");
            }
        },
        onCountrySelect: function (self, arg) {
            var selectedItem = arg.data;
            if("CHN" != selectedItem.key) {
                model.get("queryCondition").set("province", "");
                model.get("queryCondition").set("city", "");
                model.get("queryCondition").set("county", "");
            }
        }
    });
});
表格相關(guān) 表格對(duì)枚舉值的處理
通常我們都是在表單錄入數(shù)據(jù),在表格中進(jìn)行簡(jiǎn)約展示,所以在表單中錄入的下拉枚舉值我們需要在表格中使用的時(shí)候必須使用獲取到的枚舉值進(jìn)行翻譯
column(property="status")
    template
    div(c-bind="translate("10000",$default)")
表格對(duì)行內(nèi)編輯的處理
在對(duì)于處理一些簡(jiǎn)單數(shù)據(jù)的時(shí)候我們可以不需要彈出一個(gè)復(fù)雜的編輯框?qū)Ξ?dāng)前行的數(shù)據(jù)進(jìn)行編輯處理,可以直接在表格進(jìn)行行內(nèi)編輯
c-table(bind="simple01s" dataType="Simple01" readOnly="false")
表格行編輯對(duì)下拉項(xiàng)的處理
在表單編輯我們可以去選擇一個(gè)下拉項(xiàng)做為數(shù)據(jù)值,當(dāng)然在表格行編輯也可以
column(property="status")
    template(name="edit")
        c-dropdown(bind="$default" c-items="dictionary("10000")")

最后代碼整理為

column(property="status")
    template(name="edit")
        c-dropdown(bind="$default" c-items="dictionary("10000")")
    template
        div(c-bind="translate("10000",$default)")
表格添加操作列的處理
通常我們需要在表格的最后一列添加一行操作列來(lái)處理當(dāng)前行的數(shù)據(jù)
c-table(bind="simple in simple01s" dataType="Simple01")
    column(caption=ll.l("operation"))
        template
            div
                a.cell-link(c-onclick="view(simple)")=ll.l("view")
表格聯(lián)動(dòng)的處理
很多場(chǎng)景下,我們的數(shù)據(jù)和數(shù)據(jù)都是有關(guān)聯(lián)關(guān)系,比如一本書對(duì)應(yīng)書籍的出版社的詳細(xì)信息,這時(shí)候針對(duì)不同的書本信息聯(lián)動(dòng)到出版社的詳細(xì)信息

因?yàn)榇颂幨莾蓚€(gè)表的關(guān)聯(lián),所以需要定義兩個(gè)dataType

cModel.js

var $DataType = {
    A: {
        name: "A",
        properties : {
            name : {
                caption : "[(#{name})]",
                dataType : "string",
            }
        }
    },
    B : {
        name : "B",
        properties : {
            name : {
                caption : "[(#{name})]",
                dataType : "string"
            }
        }
    }
};

c.jade

c-table(bind="as" dataType="a")
    column(property="name")
c-table(bind="as#.bs" dataType="b")
    column(property="name")

c.js

cola(function(model) {
    model.dataType($DataType.B);
    $DataType.A.properties.bs = {
        dataType: "B",
        aggregated: true,
        provider: {
            url: "controller/B/find",
            sendJson: true,
            parameter: {
                "name": "{{@name}}"
            }
        }
    }
    model.dataType($DataType.A);
    model.describe("as", {
        dataType : "A",
        provider : {
            url : "controller/C/findPagination?from={{$from}}&limit={{$limit}}",
            pageSize : 10,
            sendJson : true,
            loadMode: "manual"
        }
    });
    model.set("title", "[(#{C})]");
    model.action({
    });
});

在關(guān)聯(lián)中可以使用parameter:{"name":"{{@name}}"}方式拿到父表中當(dāng)前選中行的name的值

表格數(shù)據(jù)加載的處理
在某些場(chǎng)景下我們可以讓表格數(shù)據(jù)直接加載到頁(yè)面,也可以使用事件來(lái)觸發(fā)加載數(shù)據(jù)
loadMode: "manual"

可以通過(guò)loadMode來(lái)控制表單是否在頁(yè)面加載的時(shí)候加載數(shù)據(jù)到頁(yè)面:manual手工加載,注釋掉loadMode缺省自動(dòng)加載數(shù)據(jù)

面板Panel 相關(guān) 在panel頭位置添加按鈕
c-panel#panelDemo(caption=ll.l("panel"))
    template(name="tools")
       div
          c-button.primary(caption=ll.l("add") click="add")
其它 預(yù)加載處理
通常我們會(huì)在頁(yè)面加載完成的時(shí)候自動(dòng)觸發(fā)一部分方法或者set一部分?jǐn)?shù)據(jù)值到指定屬性
cola.ready(function() {
    cola.widget("panelDemo").collapse(); // 在加載完頁(yè)面之后 折疊id為panelDemo的面板
});

代碼應(yīng)該放在cola(function (model) { })

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/75447.html

相關(guān)文章

  • Spring 指南(目錄)

    摘要:指南無(wú)論你正在構(gòu)建什么,這些指南都旨在讓你盡快提高工作效率使用團(tuán)隊(duì)推薦的最新項(xiàng)目版本和技術(shù)。使用進(jìn)行消息傳遞了解如何將用作消息代理。安全架構(gòu)的主題指南,這些位如何組合以及它們?nèi)绾闻c交互。使用的主題指南以及如何為應(yīng)用程序創(chuàng)建容器鏡像。 Spring 指南 無(wú)論你正在構(gòu)建什么,這些指南都旨在讓你盡快提高工作效率 — 使用Spring團(tuán)隊(duì)推薦的最新Spring項(xiàng)目版本和技術(shù)。 入門指南 這些...

    only_do 評(píng)論0 收藏0
  • 不得不提前端性能優(yōu)化

    摘要:對(duì)于廣大的前端開發(fā)人員來(lái)說(shuō),網(wǎng)站構(gòu)建本是家常便飯其中也不得不涉及到性能優(yōu)化的問(wèn)題。將不影響首屏的資源和當(dāng)前屏幕資源不用的資源放到用戶需要時(shí)才加載,可以大大提升重要資源的顯示速度和降低總體流量按需加載會(huì)導(dǎo)致大量重繪,影響渲染性能。對(duì)于廣大的前端開發(fā)人員來(lái)說(shuō),網(wǎng)站構(gòu)建本是家常便飯;其中也不得不涉及到性能優(yōu)化的問(wèn)題。之前也有接觸過(guò),今天總結(jié)一下這方面的技巧,下面是我的一下認(rèn)知,歡迎探討: ? Nu...

    xushaojieaaa 評(píng)論0 收藏0
  • MongoDB指南---12、使用explain()和hint()、何時(shí)不應(yīng)該使用索引

    摘要:表示本次查詢使用了索引,具體來(lái)說(shuō),是使用了和上的索引,。建立索引時(shí),或者是每執(zhí)行次查詢之后,查詢優(yōu)化器都會(huì)重新評(píng)估查詢計(jì)劃。上一篇文章指南使用復(fù)合索引操作符如何使用索引索引對(duì)象和數(shù)組索引基數(shù)下一篇文章指南索引類型 上一篇文章:MongoDB指南---11、使用復(fù)合索引、$操作符如何使用索引、索引對(duì)象和數(shù)組、索引基數(shù)下一篇文章:MongoDB指南---13、索引類型 使用explain...

    LiangJ 評(píng)論0 收藏0
  • MongoDB指南---12、使用explain()和hint()、何時(shí)不應(yīng)該使用索引

    摘要:表示本次查詢使用了索引,具體來(lái)說(shuō),是使用了和上的索引,。建立索引時(shí),或者是每執(zhí)行次查詢之后,查詢優(yōu)化器都會(huì)重新評(píng)估查詢計(jì)劃。上一篇文章指南使用復(fù)合索引操作符如何使用索引索引對(duì)象和數(shù)組索引基數(shù)下一篇文章指南索引類型 上一篇文章:MongoDB指南---11、使用復(fù)合索引、$操作符如何使用索引、索引對(duì)象和數(shù)組、索引基數(shù)下一篇文章:MongoDB指南---13、索引類型 使用explain...

    DTeam 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<