工作一年的三两事(三)

2016年马上就要过去了,回首在公司的一年中,工作遇到了不少坑,也学到了不少新知识,至少对于我来说是新知识_,特此腾出时间记录一下,程序员、语死早,一些话表达不清楚只能靠代码和截图了,见谅见谅。

本篇博文,分三个篇幅:PHP、Ionic、AngularJs。都是在工作项目中接触到的,还有nodejs,但是接触时间比较短,还是先多学学。

三、AngularJs

AngularJS 诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。

分享一些前端频繁使用的模块代码

弹窗及消息

一开始网上找的,挺好用的一个模块代码,在其基础上进行了一些扩展和改造,即拿即用
先看看如何使用和效果图

消息

在controller中注入



函数调用



效果图

确认弹窗

函数调用



效果图


CSS代码部分:

(这部分要感谢公司前端同事)

/*提示信息*/

.nspop_megcontainer {position: fixed;bottom: 12px;width:100%;z-index: 999;}

.nspop_megcontainer .main {padding: 8px;background-color:#030303;width: 10em;margin: auto;border-radius: 5px;opacity: 0.8;}

.nspop_megcontainer .textContent { color: #ffffff;text-align:center;}

/*确认弹窗样式*/

.confirmPop{text-align:center;width:100%;height:100%;display:table;position:absolute;top: 0;left: 0;z-index: 12;}

.confirmPop_box{display:table-cell;vertical-align:middle;}

.confirmPop_content{width: 70%;margin:0 auto;position:relative;}

.confirmPop_wrap{width: 100%;height: auto;background:#ffffff;border-radius: 10px;}

.confirmPop_img{width: 100%;height: auto;padding: 15px 38%10px;box-sizing: border-box;}

.confirmPop_img img{width: 100%;height: auto;}

.confirmPop_text{width: 100%;height: auto;line-height:20px;padding: 5px 10px;box-sizing: border-box;text-align: center;}

.confirmPop_btn{width: 100%;height: auto;overflow:hidden;padding: 8px;box-sizing: border-box;}

.confirmPop_btn_left{width: -webkit-calc(50% - 8px);width:-moz-calc(50% - 8px);width: calc(50% - 8px);height: 30px;line-height:30px;text-align: center;float: left;background: #e0e0e0;color:#666666;border-radius: 8px;margin: 0 4px;}

.confirmPop_btn_right{width: -webkit-calc(50% - 8px);width:-moz-calc(50% - 8px);width: calc(50% - 8px);height: 30px;line-height:30px;text-align: center;float: left;background: #33ccff;color:#ffffff;border-radius: 8px;margin: 0 4px;}

JS部分

angular.module('app')
.factory("dialogsManager", function ($q, $http, $compile, $timeout, $rootScope) {
    //不明白可加  qq群517568588 交流
    //消息模板
    var megTmp;
    var dialog = {
        megs: [],
        showMessage: showMessage,
        alert: alert,  //未实现
        confirm: confirm, //未实现
        luckPop:luckPop, //中奖弹窗
    };

    //消息展示
    function showMessage(content, options) {
        megTmp = "<div class='nspop_megcontainer myactive' >" +
        "<div class='main'>" +
        "<div class='textContent'>{{content}}</div>" +
        "</div>" +
        "</div>";
        if(typeof options == 'undefined') options = {};
        options.bottom = 280;
        options.timeout = 2000;
        options = remove(options);
        //消息文本
        options.scope.content = content;
        msg(options,function(result){
            $timeout(function () {
                result.remove(); //移除消息展示
                options.scope.$destroy();  //摧毁作用域
            }, options.timeout);
        })
    };

    //中奖
    function luckPop(name,number,callback){
        megTmp= '<div class="lottery zoomIn">' +
            '<div class="lottery_cont">' +
        '![](img/img_lottery.png)'+
        '![](img/img_lottery_bg.png)</div>'+
        '<div class="lottery_text">'+
        '<div>期号:{{number}}</div>'+
        '<div>{{name}}</div></div></div>'+
        '<div ng-click="cancel()" class="lottery_bg"></div>';
        var options = {};
        options.bottom = 0;
        options.timeout = 0;
        options = remove(options);
        options.scope.name = name;
        options.scope.number = number;
        options.scope.click = function(){
            callback();
            options.scope.cancel();
        };
        options.scope.cancel = function(){
            options.scope.mode.remove(); //移除消息展示
            options.scope.$destroy();  //摧毁作用域
        };
        msg(options,function(result){
            options.scope.mode = result;
        })
    }

    //确认框
    //params:{'okText':'确定','cancelText':'取消',template:'是否确定删除该商品?'}
    function confirm(params,success,error){
        if(params.template == '') return;
        megTmp = '<div class="confirmPop">'+
        '<div class="confirmPop_box">'+
        '<div class="confirmPop_content">'+
        '<div class="confirmPop_wrap">'+
        '<div class="confirmPop_img">'+
        '![](img/icon_tip.png)</div>'+
        '<div class="confirmPop_text">{{template}}</div>'+
        '<div class="confirmPop_btn">'+
        '<div class="confirmPop_btn_left" ng-click="cancel()">{{cancelText}}</div>'+
        '<div class="confirmPop_btn_right" ng-click="confirm()">{{okText}}</div>'+
        '</div></div></div></div></div>'+
        '<div class="pop_bg"></div>';
        var options = {
            bottom:0,
            timeout:0
        };
        options = remove(options);
        options.scope.okText = params.okText || '确定';
        options.scope.cancelText = params.cancelText || '取消';
        options.scope.template = params.template;
        options.scope.confirm = function(){
            options.scope.mode.remove(); //移除消息展示
            options.scope.$destroy();  //摧毁作用域
            if(typeof success == 'function') success();
        };
        options.scope.cancel = function(){
            options.scope.mode.remove(); 
            options.scope.$destroy();
            if(typeof error == 'function') error();
        };
        msg(options,function(result){
            options.scope.mode = result;
        })
    }

    //消息创建
    function msg(options,callback){
        var megPromise = $q.when(compileTmp({
            template: megTmp,
            scope: options.scope,
            appendTo: angular.element(document.body)
        }))
        megPromise.then(function (result) {
            dialog.megs.push(result);
            result.css("bottom", options.bottom + "px");
            callback(result);
        })
    }

    //移除和继承
    function remove(options){
        //移除已存在的消息展示
        angular.forEach(dialog.megs, function (item, index) {
            item.remove();
        });
        options = angular.extend({
            bottom: options.bottom, //下边距离
            scope: $rootScope.$new(), //创建一个继承自根的作用域
            timeout: options.timeout  //多少秒后自动隐藏
        }, options);
        return options;
    }

    //编译模板
    function compileTmp(options) {
        var tem = $compile(options.template)(options.scope);
        if (options.appendTo) {
            options.appendTo.append(tem);
        }
        return tem;
    };
    return dialog;
})

弹窗使用的图标


顺便在分享一下AngularJs图片懒加载模块

Git地址 https://github.com/Treri/me-lazyimg

简单介绍一下使用
JS引入

<script type="text/javascript" src="js/ me-lazyimg.js"></script>

Html代码

<!--滚动区域内-->
<div lazy-container> 
    ![]({{img}})
</div>

好了,这次的代码分享就到这里结束了,明年见

2016-12-30 21:40

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,264评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,549评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,389评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,616评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,461评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,351评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,776评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,414评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,722评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,760评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,537评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,381评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,787评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,030评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,304评论 1 252
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,734评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,943评论 2 336

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,142评论 25 707
  • 第五章(1) 时间似乎能治愈一切,二妞他们已经走了半年多了,铃儿也渐渐适应了没有他们的生活。老师又给她安排了新的同...
    花蓉儿阅读 319评论 0 1
  • button有固有尺寸,使用autolayout时,如果没有设置宽高,就会使用默认的系统设置进行宽高的设置 默认系...
    ShenYj阅读 1,111评论 0 1
  • 从毕业到现在,已经走过了六个工作年头,回想自己的六年,该考下来的中级一直都没有拿下来,而自己却浑然不觉得哪有问题。...
    薄荷的自由未来阅读 129评论 0 0
  • /夜奔 梅,傲寒独开,品格高洁,因此常被人称赏。除此之外,梅花这种意象,也有些独特的运用。比如,《诗经·召南》里有...
    一夜星辰阅读 50,371评论 13 11