欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

xmlplus組件設計系列之文本框(TextBox)(3)

 更新時間:2017年05月03日 09:46:02   作者:qudou  
xmlplus 是一個JavaScript框架,用于快速開發(fā)前后端項目。這篇文章主要介紹了xmlplus組件設計系列之文本框,具有一定的參考價值,感興趣的小伙伴們可以參考一下

文本框是頁面中最常用的輸入組件,它的默認使用方式如下:

<input type='text'/>

當然,這里的 `type='text' 可以略去不寫。大部分情況下,使用默認的文本框作為輸入組件是沒什么問題的,但在具體的項目中,難免會有功能擴展的需求。這里僅以如何增加文本框數(shù)據(jù)的格式化輸入輸出能力為例說明如何擴展原生的文本框組件。除了本章的內(nèi)容,你也可以參考官方文檔中的 參數(shù)映射 一章。

目標組件的功能分析

對于原生的文本框,我們獲取到的值是文本類型的,就像下面的示例所展示的:

Example: {
  xml: "<input id='input' value='text'/>",
  fun: function (sys, items, opts) {
    console.log(typeof this.prop("value")); // string
  }
}

如果需要其它類型的數(shù)值,就需要對獲取到的數(shù)據(jù)進行格式化操作。比如,如果需要整型數(shù),就需要用到 parseInt 函數(shù);如果需要浮點型數(shù),就需要用到 parseFloat 函數(shù)。如果我們能夠?qū)⒏袷交瘮?shù)據(jù)的操作封裝起來,那使用起來一定會相當?shù)姆奖恪榱嗣鞔_我們的預期,不妨先給出目標組件的使用示例。

Index: {
  xml: "<div id='index'>\
       <TextBox id='foo'/>\
       <TextBox id='bar' format='int'/>\
     </div>",
  fun: function (sys, items, opts) {
    items.foo.value = "hello, world";
    items.bar.value = 27.1828;
    console.log("foo", items.foo.value);
    console.log("bar", items.bar.value);
  }
}

此示例實例化了兩個組件 Input。組件 Input 允許接收一個 format 參數(shù)作為其靜態(tài)接口輸入,并提供一個屬性 value 作為其動態(tài)輸入輸出接口。format 參數(shù)有三種可能的值:string (默認)、int 以及 float。這三種值分別對應三種數(shù)據(jù)類型:字符串型、整型和浮點型。屬性 value 根據(jù) format 的值來進行格式化輸入輸出。示例的輸出結果應該會是下面這樣子:

hello, world
227

目標組件的實現(xiàn)

為了完成上面的目標組件,我們先給出一個文本框的組件框架。

TextBox: {
  xml: "<input id='input' type='text'/>",
  opt: { format: "string" },
  fun: function (sys, items, opts) {
    var parse = {"int": parseInt, "float": parseFloat, "string": String}[opts.format];
    function getValue() {
      // 這里需要獲取 input 的值并根據(jù) opts.format 值選擇適當?shù)母袷交瘮?shù),
    }
    function setValue(value) {
      // 這里需要根據(jù) opts.format 值選擇適當?shù)母袷交瘮?shù),對 value 進行格式化后同去賦值
    }
    return Object.defineProperty({}, "value", { get: getValue, set: setValue });
  }
}

上面關鍵的地方在于格式化函數(shù)的選取,為了簡單化,我們采用的是表查詢方式。在組件初始化階段該函數(shù)就已經(jīng)準備就緒了,上述的 parse 函數(shù)即所需的格式化函數(shù)。不過需要注意的是,該組件的格式化函數(shù)類型在組件初始化時就固定了。如果需要可變的格式化函數(shù),你需要對組件做些修正。好了,下面可以給出完整的的文本框組件了。

TextBox: {
  xml: "<input id='input' type='text'/>",
  opt: { format: 'string' },
  map: { attrs: { input: "disabled value placeholder readonly" } },
  fun: function (sys, items, opts) {
    var parse = {"int": parseInt, "float": parseFloat, "string": String}[opts.format];
    function getValue() {
      return parse(sys.input.prop("value"));
    }
    function setValue(value) {
      sys.input.prop("value", parse(value));
    }
    return Object.defineProperty({}, "value", { get: getValue, set: setValue });
  }
}

另外請注意,上面組件添加了部分屬性映射的內(nèi)容,這可以在具體的項目中根據(jù)需要進行增刪。

本系列文章基于 xmlplus 框架。如果你對 xmlplus 沒有多少了解,可以訪問 www.xmlplus.cn。這里有詳盡的入門文檔可供參考。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 初識javascript 文檔碎片

    初識javascript 文檔碎片

    今天遇到一個問題: 我通過 ajax 取回另一個頁面的 Html 。但這些 HTML 我不想直接輸出,想通過 getElementsByName 處理后再輸出相應的內(nèi)容。用原生的 javascript怎樣可以處理呢?
    2010-07-07
  • es6數(shù)組之擴展運算符操作實例分析

    es6數(shù)組之擴展運算符操作實例分析

    這篇文章主要介紹了es6數(shù)組之擴展運算符操作,結合實例形式總結分析es6數(shù)組擴展運算符具體原理、實現(xiàn)方法及操作注意事項,需要的朋友可以參考下
    2020-04-04
  • 動態(tài)加載js、css的簡單實現(xiàn)代碼

    動態(tài)加載js、css的簡單實現(xiàn)代碼

    下面小編就為大家?guī)硪黄獎討B(tài)加載js、css的簡單實現(xiàn)代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • webpack 5 mode的作用和區(qū)別解析

    webpack 5 mode的作用和區(qū)別解析

    Webpack 5 是一款強大的模塊打包工具,可用于將許多分散的模塊按照依賴關系打包成一個(或多個)bundle,這篇文章給大家介紹webpack 5 mode的作用和區(qū)別解析,感興趣的朋友跟隨小編一起看看吧
    2024-01-01
  • 微信小程序之五種頁面跳轉方法小結

    微信小程序之五種頁面跳轉方法小結

    本文主要介紹了微信小程序之五種頁面跳轉方法小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • JavaScript獲取Excel表格的列序號和列名

    JavaScript獲取Excel表格的列序號和列名

    這篇文章主要介紹了JavaScript獲取Excel表格的列序號和列名,在處理Excel文件時,通常要獲取xx列的數(shù)據(jù),這就要求先找到列序號,下文關于列名獲取需要的小伙伴可以參考一下
    2022-05-05
  • javasript實現(xiàn)密碼的隱藏與顯示

    javasript實現(xiàn)密碼的隱藏與顯示

    用戶輸入密碼時都是顯示的星號了,那么我們希望查看明文要怎么查看呢,下面我們只要使用一段簡單的js就可以實現(xiàn)查看密碼框的明文了,有需要的小伙伴可以來參考下。
    2015-05-05
  • javascript十六進制數(shù)字和ASCII字符之間的轉換方法

    javascript十六進制數(shù)字和ASCII字符之間的轉換方法

    下面小編就為大家?guī)硪黄猨avascript十六進制數(shù)字和ASCII字符之間的轉換方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • Js中Symbol的靜態(tài)屬性及用途詳解

    Js中Symbol的靜態(tài)屬性及用途詳解

    JavaScript 語言在 ES6 規(guī)范中引入了 Symbol 類型,它是一種原始數(shù)據(jù)類型,用于創(chuàng)建唯一的標識符,本文將介紹 Symbol 類型的所有靜態(tài)屬性,并舉例說明它們的用途和使用場景,希望對大家有所幫助
    2023-12-12
  • KnockoutJS 3.X API 第四章之數(shù)據(jù)控制流component綁定

    KnockoutJS 3.X API 第四章之數(shù)據(jù)控制流component綁定

    這篇文章主要介紹了KnockoutJS 3.X API 第四章之數(shù)據(jù)控制流component綁定的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-10-10

最新評論