2018-01-29 微信小程序小程序頁面節(jié)點(diǎn)最大數(shù)量、ECharts使用、Ajax 返回任意類型值、窗體設(shè)計(jì)中設(shè)置表格某一列數(shù)據(jù)長度、AngularJS 過濾器

第一組:楊昊 微信小程序小程序頁面節(jié)點(diǎn)最大數(shù)量

做前端開發(fā)的同學(xué),都遇到過頁面節(jié)點(diǎn)過多,從而導(dǎo)致頁面加載很慢,或者瀏覽器直接崩潰。

在小程序開發(fā)中,下拉刷新數(shù)據(jù)的用法應(yīng)該比較多,那么小程序頁面節(jié)點(diǎn)最大數(shù)量又是多大呢?

在網(wǎng)上查了一下,看了看前輩們踩的坑,發(fā)現(xiàn)大量數(shù)據(jù)直接扔到小程序模板里面去遍歷(wx:for),開發(fā)者工具的日志里面有可能直接報(bào)錯(cuò):invokeWebviewMethod 數(shù)據(jù)傳輸長度為 1233778 已經(jīng)超過最大長度 1048576


至于為什么是1048576這個(gè)長度,恐怕要問微信團(tuán)隊(duì)的底層實(shí)現(xiàn)了,應(yīng)該是考慮到性能問題,不允許一次性加載這么多節(jié)點(diǎn)到頁面上~

注:巧的是1048576B=1M,excel的最大行數(shù)也是1048576行,也許微信這個(gè)節(jié)點(diǎn)長度用這個(gè)值是經(jīng)過考慮之后的一個(gè)值。


第二組:葉佳意 ECharts使用

ECharts,一個(gè)使用 JavaScript 實(shí)現(xiàn)的開源可視化庫,可以流暢的運(yùn)行在 PC 和移動(dòng)設(shè)備上,兼容當(dāng)前絕大部分瀏覽器(IE8/9/10/11,Chrome,F(xiàn)irefox,Safari等),底層依賴輕量級的矢量圖形庫 ZRender,提供直觀,交互豐富,可高度個(gè)性化定制的數(shù)據(jù)可視化圖表。

使用ECharts畫圖表步驟如下:

一、獲取 ECharts

你可以通過以下幾種方式獲取 ECharts。

1、從官網(wǎng)下載界面選擇你需要的版本下載,根據(jù)開發(fā)者功能和體積上的需求,我們提供了不同打包的下載,如果你在體積上沒有要求,可以直接下載完整版本。開發(fā)環(huán)境建議下載源代碼版本,包含了常見的錯(cuò)誤提示和警告。
2、在 ECharts 的 GitHub 上下載最新的 release 版本,解壓出來的文件夾里的 dist 目錄里可以找到最新版本的 echarts 庫。
3、通過 npm 獲取 echarts,npm install echarts --save。
4、cdn 引入,你可以在 cdnjs,npmcdn 或者國內(nèi)的 bootcdn 上找到 ECharts 的最新版本。

二、引入 ECharts

ECharts 3 開始不再強(qiáng)制使用 AMD 的方式按需引入,代碼里也不再內(nèi)置 AMD 加載器。因此引入方式簡單了很多,只需要像普通的 JavaScript 庫一樣用 script 標(biāo)簽引入。

<!DOCTYPE html><html><head>
    <meta charset="utf-8">
    <!-- 引入 ECharts 文件 -->
<script src="echarts.min.js"></script></head></html>
三、繪制一個(gè)簡單的圖表

在繪圖前我們需要為 ECharts 準(zhǔn)備一個(gè)具備高寬的 DOM 容器。

<body>
    <!-- 為 ECharts 準(zhǔn)備一個(gè)具備大小(寬高)的 DOM -->
    <div id="main" style="width: 600px;height:400px;"></div></body>

然后就可以通過 echarts.init 方法初始化一個(gè) echarts 實(shí)例并通過 setOption 方法生成一個(gè)簡單的柱狀圖,下面是完整代碼。

<!DOCTYPE html><html><head>
    <meta charset="utf-8">
    <title>ECharts</title>
    <!-- 引入 echarts.js -->
    <script src="echarts.min.js"></script></head><body>
    <!-- 為ECharts準(zhǔn)備一個(gè)具備大小(寬高)的Dom -->
    <div id="main" style="width: 600px;height:400px;"></div>
    <script type="text/javascript">
        // 基于準(zhǔn)備好的dom,初始化echarts實(shí)例
        var myChart = echarts.init(document.getElementById('main'));

        // 指定圖表的配置項(xiàng)和數(shù)據(jù)
        var option = {
            title: {
                text: 'ECharts 入門示例'
            },
            tooltip: {},
            legend: {
                data:['銷量']
            },
            xAxis: {
                data: ["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"]
            },
            yAxis: {},
            series: [{
                name: '銷量',
                type: 'bar',
                data: [5, 20, 36, 10, 10, 20]
            }]
        };

        // 使用剛指定的配置項(xiàng)和數(shù)據(jù)顯示圖表。
        myChart.setOption(option);
    </script></body></html>

這樣你的第一個(gè)圖表就誕生了!


第三組: Ajax 返回任意類型值

在使用Ajax過程中,有的方法需要傳回string,有的要傳回model或model[];但是在我們最開始設(shè)置返回值result的時(shí)候只能設(shè)置一種類型,那這樣返回不同類型的值就得新建一個(gè)一般處理程序,這樣就會(huì)顯得很不簡潔。

那在設(shè)置返回值result的時(shí)候有沒有一種可以設(shè)置成任意類型的方法呢?

答案是有,AjaxResult就能做到。

public class PmAsCheckTaskList: BaseHandler {
    public static AjaxResult result = new AjaxResult() {
        IsSuccess = true;
    };
    public override void ProcessRequest(HttpContext context) {
        try {
            switch (context.Request["method"].ToLower()) {
                //獲得檢查條目 輸入?yún)?shù) 標(biāo)簽 返回 Tid 條目 依據(jù)
            case "getjctm":
                result = GetJctmListBySepara(context);
                break;
            }
        } catch(Exception e) {
            //日志記錄
            result.IsSuccess = false;
            result.Message = e.Message;
        }
        context.Response.Write(result.ToJson());
    }
//獲得檢查條目 輸入?yún)?shù) 標(biāo)簽 返回 Tid 條目 依據(jù)
public AjaxResult GetJctmListBySepara(HttpContext context) {
    LoongAir.Model.PmAsCheckEntry[] insPace = new PmAsCheckEntry[] {};
    //標(biāo)簽篩選分支
    //選擇標(biāo)簽返回默認(rèn)帶出的檢查條目 Tid數(shù)組
    string labels = context.Request["labels"];
    if (labels != null) {
        //選擇的關(guān)系運(yùn)算符
        string relchr = string.IsNullOrEmpty(context.Request["relchr"]) ? "||": context.Request["relchr"];
        long[] labelTids = Array.ConvertAll(labels.Trim(',').Split(','), s = >s.ToLong());
        insPace = LoongAir.DB.PmAsCheckEntry.QueryEntryByMutiLabelsAndRelChr(labelTids, relchr);
    }
    //條目內(nèi)容篩選分支
    string entrycontent = context.Request["entrycontent"];
    if (entrycontent != null) {
        insPace = LoongAir.DB.PmAsCheckEntry.selectEntries(loginUser, null, new LoongAir.Model.PmAsCheckEntry() {
            PmAsCheckEntryContent = entrycontent
        });
    }

    //返回 檢查條目的Tid 條目 依據(jù)
    //PmAsCheckEntryContent PmAsCheckAccordance
    DataTable dt = new DataTable();
    dt.Columns.Add("Tid", typeof(string));
    dt.Columns.Add("PmAsCheckEntryContent", typeof(string));
    dt.Columns.Add("PmAsCheckAccordance", typeof(string));
    foreach(var ins in insPace) {
        DataRow dr = dt.NewRow();
        dr["Tid"] = ins.Tid;
        dr["PmAsCheckEntryContent"] = ins.PmAsCheckEntryContent;
        dr["PmAsCheckAccordance"] = ins.PmAsCheckAccordance;
        dt.Rows.Add(dr);
    }
    result.Data = dt;
    return result;
}

另外,如果我們需要從兩張表里分別選幾個(gè)字段拼成一個(gè)類似于視圖一樣的表,在這里,用DataTable直接拼接就可以做到。


第四組:李俊 窗體設(shè)計(jì)中設(shè)置表格某一列數(shù)據(jù)長度

在GridView表格當(dāng)中新增數(shù)據(jù)時(shí),由于所有數(shù)據(jù)最終都要存入數(shù)據(jù)庫中,而數(shù)據(jù)庫表中對每個(gè)字段的數(shù)據(jù)長度進(jìn)行了設(shè)置,如果對新增數(shù)據(jù)在前臺不進(jìn)行數(shù)據(jù)限制的話,在插入數(shù)據(jù)庫的時(shí)候就會(huì)出錯(cuò)。因此,需要對GridView中單元格的數(shù)據(jù)長度進(jìn)行設(shè)置,超過則提示過長,并且返回原值(修改時(shí)返回修改前的數(shù)據(jù),新增時(shí)返回空數(shù)據(jù)):

/// <summary>
/// 數(shù)據(jù)長度檢
/// </summary>
/// <param name="data">數(shù)據(jù)</param>
/// <param name="lengthLimit">長度限制</param>
/// <param name="caption">列名</param>
private void checkDataLength(string data, int lengthLimit, string caption, int row, string column)
   {
      if (data.Length > lengthLimit)
         {
            XtraMessageBox.Show(caption + "不能超過" + lengthLimit + "個(gè)字符");
            //返回原值
            UIT4007 ACTypeInfo = new UIT4007();
        Loc.Support.GetT4007SearchPara SearchParam = new Loc.Support.GetT4007SearchPara
            {
               UIT_Model = ACTypeInfo
            };
  UIModelListResult<UIT4007> originalData = DispatchHandler.GetAcTypeList(SearchParam);
                //對原數(shù)據(jù)進(jìn)行更改失敗的時(shí)候返回原值
            if (row < originalData.List.Length)
            {
              //取對應(yīng)字段的值
              Model.UIT4007 test = originalData.List[row];
              string testValue = "";
              Type type = typeof(Model.UIT4007);
              System.Reflection.PropertyInfo property = type.GetProperty(column);
              if (property != null)
                 {
                    object o = property.GetValue(test, null);
                    testValue = (o == null ? "" : o.ToString());
                 }
              //修改失敗的單元格數(shù)據(jù)重新返回原值,方法是通過以原值進(jìn)行賦值
              gridView1.SetRowCellValue(row, column, testValue);
              gridView1.RefreshRow(row);
                }
             //在新增數(shù)據(jù)過程中,對單元格增加失敗時(shí)返回單元格最初空值狀態(tài)
               else
                {
                    gridView1.SetRowCellValue(row, column, "");
                    gridView1.RefreshRow(row);
                }
            }
        }

第五組:周倩宇 AngularJS 過濾器

過濾器可以使用一個(gè)管道字符(|)添加到表達(dá)式和指令中。可用于轉(zhuǎn)換數(shù)據(jù):

過濾器 描述
currency 格式化數(shù)字為貨幣格式。
filter 從數(shù)組項(xiàng)中選擇一個(gè)子集。
lowercase 格式化字符串為小寫。
orderBy 根據(jù)某個(gè)表達(dá)式排列數(shù)組。
uppercase 格式化字符串為大寫。
  1. uppercase,lowercase 大小寫轉(zhuǎn)換
    {{ "lower cap string" | uppercase }} // 結(jié)果:LOWER CAP STRING
    {{ "TANK is GOOD" | lowercase }} // 結(jié)果:tank is good

  2. date 格式化
    {{1490161945000 | date:"yyyy-MM-dd HH:mm:ss"}} // 2017-03-22 13:52:25

  3. number 格式化(保留小數(shù))
    {{149016.1945000 | number:2}}

  4. currency貨幣格式化
    {{ 250 | currency }} // 結(jié)果:$250.00
    {{ 250 | currency:"RMB ¥ " }} // 結(jié)果:RMB ¥ 250.00

  5. filter查找:輸入過濾器可以通過一個(gè)管道字符(|)和一個(gè)過濾器添加到指令中,該過濾器后跟一個(gè)冒號和一個(gè)模型名稱。filter 過濾器從數(shù)組中選擇一個(gè)子集
    // 查找name為iphone的行
    {{ [{"age": 20,"id": 10,"name": "iphone"},
    {"age": 12,"id": 11,"name": "sunm xing"},
    {"age": 44,"id": 12,"name": "test abc"}
    ] | filter:{'name':'iphone'} }}

  6. limitTo 截取
    {{"1234567890" | limitTo :6}} // 從前面開始截取6位
    {{"1234567890" | limitTo:-4}} // 從后面開始截取4位

  7. orderBy 排序

    • // 根id降序排
      {{ [{"age": 20,"id": 10,"name": "iphone"},
      {"age": 12,"id": 11,"name": "sunm xing"},
      {"age": 44,"id": 12,"name": "test abc"}
      ] | orderBy:'id':true }}

    • // 根據(jù)id升序排
      {{ [{"age": 20,"id": 10,"name": "iphone"},
      {"age": 12,"id": 11,"name": "sunm xing"},
      {"age": 44,"id": 12,"name": "test abc"}
      ] | orderBy:'id' }}

數(shù)據(jù)來源:http://www.runoob.com/angularjs/angularjs-filters.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,578評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,701評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,691評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,694評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,026評論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,193評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,719評論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,442評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,668評論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,846評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,394評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,635評論 2 380

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,836評論 18 139
  • AngularJS是什么?AngularJs(后面就簡稱ng了)是一個(gè)用于設(shè)計(jì)動(dòng)態(tài)web應(yīng)用的結(jié)構(gòu)框架。首先,它是...
    200813閱讀 1,631評論 0 3
  • 轉(zhuǎn)載文章 angularjs 過濾器(filter)正如其名,作用就是接收一個(gè)輸入,通過某個(gè)規(guī)則進(jìn)行處理,然后返回...
    飛將軍閱讀 617評論 0 2
  • 近來,身邊的很多好友都發(fā)來了邀請,參加他們的婚禮。一個(gè)個(gè)紅色的像“炸彈”一樣的消息襲擊了我這位單身人士。在電話中...
    飛魚跳跳閱讀 500評論 3 0
  • 寫意小品畫人生 畫:傅云石 文:綠衣 一人一釣一長天, 碧水浮舟自得閑。 枕浪拋開心煩事, 清涼風(fēng)里夢猶酣。
    綠衣香閱讀 277評論 5 7