云蒼穹自定義控件開發(fā)

正文

什么是自定義控件?

自定義控件暑中,顧名思義即是開發(fā)者可以自己開發(fā)業(yè)務(wù)組件壹瘟。蒼穹本身提供比較豐 富的通用控件,業(yè)務(wù)控件鳄逾。特殊業(yè)務(wù)場景下稻轨,系統(tǒng)提供的控件無法滿足需求,例如需要 使用甘特圖雕凹,時間軸等系統(tǒng)內(nèi)本身沒有的組件殴俱,此時通過自定義控件,按照蒼穹自定義 控件的標(biāo)準(zhǔn)封裝枚抵,即可把這些組件引入到系統(tǒng)中线欲。自定義控件也有特定的JAVA插件事 件,在表單插件中可以輕松獲取到自定義控件的數(shù)據(jù)或者往自定義控件中傳入值汽摹。

自定義控件的封裝

一個完整的自定義控件目錄:

  • css 存放自定義控件的樣式

  • html存放自定義控件的html片段

  • js 存放自定義控件的js文件

  • index.js 為自定義控件的主要文件

index.js方法

(function(KDApi, $) {
    function MyComponent(model) {
        this._setModel(model);
    }

    MyComponent.prototype = {
        _setModel: function(model) {
            this.model = model;
        },
        init: function(props) {
            console.log('-----init', this.model, props);
        },
        update: function(props) {
            console.log('-----update', this.model, props)
        },
        destoryed: function() {
            console.log('-----destoryed', this.model)
        }
    }
    KDApi.register('avatar_map', MyComponent)
})(window.KDApi, jQuery);

生命周期

  • init() 控件初始化觸發(fā)李丰,只調(diào)用一次,常用于控件渲染,資源文件加載

  • update() 后臺插件設(shè)置控件值變化時觸發(fā)逼泣,用以更新控件

  • destoryed() 控件銷毀趴泌,只調(diào)用一次

index.js 參數(shù)詳解

控件參數(shù):

  1. model

模型對象舟舒,自定義控件默認(rèn)提供,值不能修改嗜憔,其中包含以下內(nèi)容 :

  • pageId 頁面標(biāo)識

  • key 控件標(biāo)識

  • dom 自定義控件掛載的dom元素對象

  • schemaId 方案id

  • isvId 開發(fā)商標(biāo)識

  • moduleId 領(lǐng)域標(biāo)識

  • invoke 函數(shù)秃励,將自定義控件事件發(fā)送給平臺后端,接收兩個參數(shù):

  • eventName 執(zhí)行事件名稱吉捶,

  • eventArgs(String|Object) 執(zhí)行事件所需參數(shù)夺鲜,推薦使用字符串

  1. prop

自定義控件數(shù)據(jù)對象,其中包含以下內(nèi)容:

  • themeColor 主題色

  • lock 是否鎖定

  • data 數(shù)據(jù)對象呐舔,插件中setData接口設(shè)置的數(shù)據(jù)

  • configItems 控件配置項

  • cardRowData 卡片行數(shù)據(jù)

init

init為自定義控件的初始化事件币励,常用于對控件渲染,狀態(tài)的設(shè)置

  • 在init事件中可調(diào)用框架方法加載html滋早,css榄审,js等資源文件, 加載完畢后即可按照第三方組件的規(guī)范創(chuàng)建控件
update

update事件杆麸,自定義控件接收到服務(wù)端的數(shù)據(jù)觸 發(fā)此事件

  • 在后臺插件中調(diào)用:
CustomControl control = this.getControl("customcontrolap"); control.setData("xxxxxx");

即會觸發(fā)自定義控件的update事件

參數(shù) prop

自定義控件數(shù)據(jù)對象搁进,其中包含以下內(nèi)容:

  • themeColor 主題色

  • lock 是否鎖定

  • data 數(shù)據(jù)對象,插件中setData接口設(shè)置的數(shù)據(jù)

  • configItems 控件配置項

  • cardRowData 卡片行數(shù)據(jù)

destory
  • 自定義控件銷毀事件 控件被銷毀時會調(diào)用昔头,一般不需要做什么操作
KDApi.loadFile(path,model,callBack)

將js饼问、css文件加載到蒼穹前端,參數(shù):

  • filePaths: String|Array 揭斧,模版文件路徑莱革,可以是單個文件,也可 以是多個文件路徑數(shù)組讹开,必填盅视,文件路徑為相對路徑

  • model: Object 組件的model對象,必填

  • callback: Function 回調(diào)函數(shù)旦万,文件加載完成后進入回調(diào)闹击,必填

KDApi.templateFilePath(path,model,callBack)

通過文件路徑加載HTML片段:

  • filePath: String 模版文件路徑,文件路徑為相對路徑成艘,必填 +

  • Mod78 el: Object 組件的model對象赏半,必填

  • data: Object 模版所需數(shù)據(jù)對象,必填

KDApi. template(tpl,data)

通過傳入字符串加載HTML片段:

  • tpl: String 模版的html片段淆两,必填

  • data:模版所需數(shù)據(jù)對象断箫,必須。例如資源文件 的地址

KDApi. getNameSpace(model)

獲取當(dāng)前服務(wù)的路徑前綴: 常用來加載添加拼接圖片地址

  • Model :object 秋冰,組件的對象仲义,必填
KDApi.register(type , ctrl)

將自定義控件注冊到蒼穹平臺中,所有自定義控件 都需調(diào)用,接收兩個參數(shù)

  • type: String 組件標(biāo)識埃撵,必須尸诽,值與方案ID相同

  • ctrl: Object 組件對象,必須盯另,需包含init方法的組件對象

服務(wù)端控件編程模型

@KSObject
@DataEntityTypeAttribute(name = "kd.bos.ext.form.control.CustomControl")
public class CustomControl extends Control {
    @KSMethod
    public String getData() {
        IClientViewProxy proxy = (IClientViewProxy) this.view.getService(IClientViewProxy.class);

        return (String) proxy.getViewState(this.getKey());
    }

    @KSMethod
    public void setData(Object data) {
        IClientViewProxy proxy = (IClientViewProxy) this.view.getService(IClientViewProxy.class);
        proxy.setFieldProperty(this.getKey(), "v", data);
        proxy.postBack(this.getKey(), data);
    }

    @KSMethod
    public void setConfigItems(List<Map<String, String>> items) {
        if ((items != null) && (items.size() > 0)) {
            IClientViewProxy proxy = (IClientViewProxy) this.view.getService(IClientViewProxy.class);
            proxy.setFieldProperty(this.getKey(), "ci", items);
        }
    }
}

自定義控件的后臺編程模型,提供以下方法:

  • getData: 返回自定義控件當(dāng)前的值

  • setData: 設(shè)置自定義控件的值,將觸發(fā)前端的update方法

  • setConfigItems:設(shè)置自定義插件的配置

如何使用洲赵?

自定義控件可放置在以下容器:

  • 頁面容器

  • Flex面板

  • 高級面板

  • 分割容器

  • 頁簽控件

使用步驟:

  1. 將自定義控件拖拽到合適的容器

  2. 點擊控件方案屬性鸳惯,選擇控件方案后返回數(shù)據(jù)

使用步驟:

  1. 選擇方案時可點擊新增方案

  2. 方案id必須和自定義控件index.js中 KDApi.register('avatar_xxx', MyComponent)注冊的id一致,否則無法加載

  3. 領(lǐng)域ID填寫相關(guān)領(lǐng)域即可叠萍,例如hr,fi芝发,注意:填寫后 即保存會在靜態(tài)資源文件下創(chuàng)建同名文件夾

  4. 開發(fā)商標(biāo)示自動根據(jù)當(dāng)前開發(fā)商填寫 tips:點擊開發(fā)文檔超鏈接,可下載自定義控件開發(fā)指南

以上就是我關(guān)于 云蒼穹自定義控件開發(fā) 知識點的整理與總結(jié)的全部內(nèi)容苛谷。


分割線

還有 5% 的精彩內(nèi)容
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
支付 ¥9.90 繼續(xù)閱讀
  • 序言:七十年代末辅鲸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子腹殿,更是在濱河造成了極大的恐慌独悴,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锣尉,死亡現(xiàn)場離奇詭異刻炒,居然都是意外死亡,警方通過查閱死者的電腦和手機自沧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門坟奥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拇厢,你說我怎么就攤上這事爱谁。” “怎么了孝偎?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵访敌,是天一觀的道長。 經(jīng)常有香客問我邪媳,道長捐顷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任雨效,我火速辦了婚禮迅涮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘徽龟。我一直安慰自己叮姑,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著传透,像睡著了一般耘沼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上朱盐,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天群嗤,我揣著相機與錄音,去河邊找鬼兵琳。 笑死狂秘,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的躯肌。 我是一名探鬼主播者春,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼清女!你這毒婦竟也來了钱烟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嫡丙,失蹤者是張志新(化名)和其女友劉穎拴袭,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體曙博,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡稻扬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了羊瘩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泰佳。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖尘吗,靈堂內(nèi)的尸體忽然破棺而出逝她,到底是詐尸還是另有隱情,我是刑警寧澤睬捶,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布黔宛,位于F島的核電站,受9級特大地震影響擒贸,放射性物質(zhì)發(fā)生泄漏臀晃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一介劫、第九天 我趴在偏房一處隱蔽的房頂上張望徽惋。 院中可真熱鬧,春花似錦座韵、人聲如沸险绘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宦棺。三九已至瓣距,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間代咸,已是汗流浹背蹈丸。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留呐芥,地道東北人白华。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像贩耐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子厦取,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容