AngularJs 表單字段合法性校驗(yàn)

AngularJs 表單字段合法性校驗(yàn)

基于AngularJS入門(mén)與進(jìn)階(江榮波 著)這本書(shū)的筆記

AngularJS 1.x的demo

AngularJS1.x和Angular2,4,5是不一樣的兩個(gè)東西烛谊,構(gòu)建方式茴恰,語(yǔ)法肴沫,都很多不同

參考文章:https://www.oschina.net/translate/angularjs-form-validation


在AngularJs要使用自帶的表單驗(yàn)證泌绣,只需要在頁(yè)面定義一個(gè)<form>標(biāo)簽司忱,然后定義表單氓奈,再使用ng-model進(jìn)行數(shù)據(jù)的雙向綁定就可以了痹籍。
CSS樣式與狀態(tài)對(duì)應(yīng)的屬性關(guān)系

CSS樣式 狀態(tài)屬性 描述
ng-valid $valid 表單輸入合法
ng-invalid $invalid 表單輸入不合法
ng-pristine $pristine 表單元素未被使用
ng-dirty $dirty 表單元素被使用
ng-touched $touched 元素獲取焦點(diǎn)
ng-untouched $untouched 元素失去焦點(diǎn)
ng-empty $empty 元素內(nèi)容為空

AngularJs表單常用校驗(yàn)相關(guān)屬性和指令

校驗(yàn)名 指令名 示例
必填 required <input type="text" required>
最小長(zhǎng)度 ng-minlength="{number}" <input type="text" ng-minlength="10">
最大長(zhǎng)度 ng-maxlength="{number}" <input type="text" ng-maxlength="10">
正則匹配 ng-pattern="/pattern/" <input type="text" ng-pattern="[0-9]">
郵箱格式 type = "email" <input type="email" ng-model="user.email">
數(shù)字格式 type = "number" <input type="number" ng-model="user.age">
網(wǎng)址格式 type = "url" <input type="url" ng-model="user.url">

首先假設(shè)有個(gè)注冊(cè)頁(yè)面的場(chǎng)景瞬欧,有個(gè)用戶(hù)注冊(cè)頁(yè)面

  • 用戶(hù)名必填
  • 密碼只能是數(shù)字或者英文字母
  • 密碼長(zhǎng)度8到16位
  • 郵箱必須格式合法

ng-showng-messages指令
表單驗(yàn)證如果不通過(guò)贷屎,我們通常需要給用戶(hù)提示出對(duì)應(yīng)的錯(cuò)誤信息,ng-show指令可以在ng-show="false"的時(shí)候控制顯示和隱藏艘虎,true為顯示唉侄,false為隱藏,上面表格也說(shuō)了可以通過(guò)$invalid獲取到當(dāng)前文本框是否合法的boolean
如果是單條錯(cuò)誤提示可以用ng-show實(shí)現(xiàn)野建,有時(shí)候我們一個(gè)文本框有過(guò)多個(gè)驗(yàn)證属划,需要提示,可以用ng-messages指令贬墩,當(dāng)檢測(cè)到不合法的時(shí)候榴嗅,會(huì)順序顯示第一條不合法的提示信息,如果需要使用ng-message指令陶舞,必須在module中引入ngMessages,并且頁(yè)面引入angular-messages.js

一個(gè)簡(jiǎn)單控制器 app.js

var formApp = angular.module("formApp",["ngMessages"]);
formApp.controller("formController",function ($scope,$log) {
    $scope.submitValid = function (isValid) {
        if(!isValid) {
            $('#showMsg').text("驗(yàn)證不通過(guò)嗽测,請(qǐng)檢查!");
            $('#showMsgDiv').modal();
        }
    }
});

demo頁(yè)面 index.html

<!DOCTYPE html>
<html lang="en" ng-app="formApp">
<head>
    <meta charset="UTF-8">
    <title>表單驗(yàn)證</title>
    <link rel="stylesheet" href="/bootstrap-3.3.7/dist/css/bootstrap.css">
    <link rel="stylesheet" href="/bootstrap-3.3.7/dist/css/bootstrap-theme.min.css">
    <script  src="/lib/angular/angular.js"></script>
    <script  src="/lib/angular-messages/angular-messages.js"></script>
    <script  src="../../js/jquery-1.9.1/jquery.js"></script>
    <script src="/bootstrap-3.3.7/dist/js/bootstrap.js"></script>
    <script src="app.js"></script>
    <style>
        body
        {   padding-top:30px;
            padding-left: 600px;
        }
    </style>
</head>
<body ng-controller="formController">
<di class = 'page-header'><h3>AngularJs 表單驗(yàn)證</h3></di>
<!-- novalidate 禁用自帶的驗(yàn)證規(guī)則-->
<form name ='userForm' novalidate ng-submit="submitValid(userForm.$valid)" style="width: 300px;">
    <div class="form-group"  style="height: 70px;">
        <label>用戶(hù)名</label>
        <input type="text" class="form-control" name="userName" ng-model="userName" required>
        <!--必填單純判斷會(huì)在頁(yè)面加載的時(shí)候就顯示錯(cuò)誤提示肿孵,可以先判斷表單是否未使用$pristine 可以避免頁(yè)面加載進(jìn)來(lái)就提示錯(cuò)誤-->
        <span ng-show="userForm.userName.$invalid && !userForm.userName.$pristine" class="help-block">必填項(xiàng)</span>
    </div>

    <div class="form-group" style="height: 70px;">
        <label>密碼</label>
        <input type="text" class="form-control" name="password" ng-model="password"
                ng-pattern="/^[A-Za-z0-9]+$/" ng-minlength="8" ng-maxlength="16">
        <!--這里有2個(gè)驗(yàn)證規(guī)則唠粥,第一個(gè)是只能是數(shù)字或者字母,第二個(gè)是長(zhǎng)度要在8-16位 使用ng-messages優(yōu)先提示格式停做,然后提示長(zhǎng)度-->
        <div ng-messages="userForm.password.$error" >
            <span ng-message="pattern">密碼只能是數(shù)字或英文字母</span>
            <span ng-message="minlength">密碼長(zhǎng)度最短8位</span>
            <span ng-message="maxlength">密碼長(zhǎng)度最長(zhǎng)16位</span>
        </div>
    </div>

    <div class="form-group" style="height: 70px;">
        <label>郵箱</label>
        <input type="email" class="form-control" name="email" ng-model="email" >
        <span ng-show="userForm.email.$invalid  && !userForm.email.$pristine" class="help-block">郵箱格式錯(cuò)誤</span>
    </div>

    <button type="submit" class="btn btn-primary">提交</button>
</form>
<!-- 模態(tài)彈出窗 -->
<div class="modal fade" id="showMsgDiv">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
                <h4 class="modal-title">提示信息</h4>
            </div>
            <div class="modal-body">
                <p id="showMsg"></p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">關(guān)閉</button>
                <!--<button type="button" class="btn btn-primary">保存</button>-->
            </div>
        </div><!-- /.modal-content -->
    </div><!-- /.modal-dialog -->
</div><!-- /.modal -->
</body>
</html>
20190825_214359[00-00-00--00-00-21].gif
失去焦點(diǎn)時(shí)驗(yàn)證

從頁(yè)面驗(yàn)證可以看出所有驗(yàn)證都是生效的了的晤愧,也按照我們的預(yù)期在驗(yàn)證,基于AngularJs的數(shù)據(jù)雙向綁定蛉腌,我們發(fā)現(xiàn)我們所有的驗(yàn)證都是及時(shí)生效的官份,這在大多數(shù)情況下是期望的只厘,不過(guò)在注冊(cè)這種情況下,我們不期望在用戶(hù)輸入的過(guò)程中就提示舅巷,期望是文本框失去焦點(diǎn)或者提交的時(shí)候驗(yàn)證羔味。

ng-model-optionsng-blurng-focus
如果要達(dá)到獲取焦點(diǎn)或失去焦點(diǎn)的時(shí)候驗(yàn)證的方式比較多,這里舉例兩種钠右,ng-model-optionsng-blurng-focus赋元。

首先我們做了個(gè)變量change,在通過(guò)ng-blurng-focus在獲取或失去焦點(diǎn)的時(shí)候改變這個(gè)值,讓ng-show指令中的表達(dá)式在失去焦點(diǎn)的時(shí)候才成立往下驗(yàn)證
對(duì)像中的blur,給對(duì)象添加一個(gè)判斷當(dāng)前輸入框是否失去焦點(diǎn)的屬性 userForm.email.$error.blur飒房,再用input的事件ng-focus搁凸,ng-blur來(lái)動(dòng)態(tài)改變這個(gè)值。

    <div class="form-group" style="height: 70px;">
        <label>郵箱</label>
        <input type="email" class="form-control" name="email" ng-model="email"
                ng-blur="change=true" ng-focus="change=false">
        <span ng-show="change && userForm.email.$invalid  && !userForm.email.$pristine" class="help-block">郵箱格式錯(cuò)誤</span>
    </div>

還可以用ng-model-option狠毯,在默認(rèn)情況下护糖,任何內(nèi)容的改變將觸發(fā)表單驗(yàn)證和model的更新。ngModelOptions指令綁定到一個(gè)事件集合中來(lái)重寫(xiě)觸發(fā)的時(shí)間垃你,例如:ng-model-options="{ updateOn: 'blur' }" 將會(huì)在控件失去焦點(diǎn)后執(zhí)行表單驗(yàn)證和更新Model椅文。你可以使用空格來(lái)分割多個(gè)事件的觸發(fā)驗(yàn)證和更新的時(shí)間。例如:ng-model-options="{ updateOn: 'mousedown blur' }"惜颇。

    <div class="form-group" style="height: 70px;">
        <label>密碼</label>
        <input type="text" class="form-control" name="password" ng-model="password"
                ng-pattern="/^[A-Za-z0-9]+$/" ng-minlength="8" ng-maxlength="16"
                ng-model-options="{ updateOn: 'blur' }">
        <!--這里有2個(gè)驗(yàn)證規(guī)則皆刺,第一個(gè)是只能是數(shù)字或者字母,第二個(gè)是長(zhǎng)度要在8-16位 使用ng-messages優(yōu)先提示格式凌摄,然后提示長(zhǎng)度-->
        <div ng-messages="userForm.password.$error" >
            <span ng-message="pattern" class="help-block">密碼只能是數(shù)字或英文字母</span>
            <span ng-message="minlength" class="help-block">密碼長(zhǎng)度最短8位</span>
            <span ng-message="maxlength" class="help-block">密碼長(zhǎng)度最長(zhǎng)16位</span>
        </div>
    </div>

ng-class動(dòng)態(tài)改變文本框樣式
在驗(yàn)證的時(shí)候我們還期望錯(cuò)誤的文本框改變顏色羡蛾,ng-class 允許我們基于一個(gè)表達(dá)式添加類(lèi)。因?yàn)槲覀兪褂昧?Bootstrap, 我們將就使用它們提供的類(lèi)(has-error)

    <div class="form-group"  style="height: 70px;" ng-class="{'has-error' : userForm.userName.$invalid && !userForm.userName.$pristine}">
        <label>用戶(hù)名</label>
        <input type="text" class="form-control" name="userName" ng-model="userName" required
                ng-model-options="{ updateOn: 'blur' }">
        <!--必填單純判斷會(huì)在頁(yè)面加載的時(shí)候就顯示錯(cuò)誤提示锨亏,可以先判斷表單是否未使用$pristine 可以避免頁(yè)面加載進(jìn)來(lái)就提示錯(cuò)誤-->
        <span ng-show="userForm.userName.$invalid && !userForm.userName.$pristine" class="help-block">必填項(xiàng)</span>
    </div>

    <div class="form-group" style="height: 70px;" ng-class="{'has-error' : userForm.password.$invalid && !userForm.password.$pristine}">
        <label>密碼</label>
        <input type="text" class="form-control" name="password" ng-model="password"
                ng-pattern="/^[A-Za-z0-9]+$/" ng-minlength="8" ng-maxlength="16"
                ng-model-options="{ updateOn: 'blur' }">
        <!--這里有2個(gè)驗(yàn)證規(guī)則痴怨,第一個(gè)是只能是數(shù)字或者字母,第二個(gè)是長(zhǎng)度要在8-16位 使用ng-messages優(yōu)先提示格式器予,然后提示長(zhǎng)度-->
        <div ng-messages="userForm.password.$error" >
            <span ng-message="pattern" class="help-block">密碼只能是數(shù)字或英文字母</span>
            <span ng-message="minlength" class="help-block">密碼長(zhǎng)度最短8位</span>
            <span ng-message="maxlength" class="help-block">密碼長(zhǎng)度最長(zhǎng)16位</span>
        </div>
    </div>

下面是完整的html,app.js沒(méi)做改變

<!DOCTYPE html>
<html lang="en" ng-app="formApp">
<head>
    <meta charset="UTF-8">
    <title>表單驗(yàn)證</title>
    <link rel="stylesheet" href="/bootstrap-3.3.7/dist/css/bootstrap.css">
    <link rel="stylesheet" href="/bootstrap-3.3.7/dist/css/bootstrap-theme.min.css">
    <script  src="/lib/angular/angular.js"></script>
    <script  src="/lib/angular-messages/angular-messages.js"></script>
    <script  src="../../js/jquery-1.9.1/jquery.js"></script>
    <script src="/bootstrap-3.3.7/dist/js/bootstrap.js"></script>
    <script src="app.js"></script>
    <style>
        body
        {   padding-top:30px;
            padding-left: 600px;
        }
    </style>
</head>
<body ng-controller="formController">
<di class = 'page-header'><h3>AngularJs 表單驗(yàn)證</h3></di>
<!-- novalidate 禁用自帶的驗(yàn)證規(guī)則-->
<form name ='userForm' novalidate ng-submit="submitValid(userForm.$valid)" style="width: 300px;">
    <div class="form-group"  style="height: 70px;" ng-class="{'has-error' : userForm.userName.$invalid && !userForm.userName.$pristine}">
        <label>用戶(hù)名</label>
        <input type="text" class="form-control" name="userName" ng-model="userName" required
                ng-model-options="{ updateOn: 'blur' }">
        <!--必填單純判斷會(huì)在頁(yè)面加載的時(shí)候就顯示錯(cuò)誤提示浪藻,可以先判斷表單是否未使用$pristine 可以避免頁(yè)面加載進(jìn)來(lái)就提示錯(cuò)誤-->
        <span ng-show="userForm.userName.$invalid && !userForm.userName.$pristine" class="help-block">必填項(xiàng)</span>
    </div>

    <div class="form-group" style="height: 70px;" ng-class="{'has-error' : userForm.password.$invalid && !userForm.password.$pristine}">
        <label>密碼</label>
        <input type="text" class="form-control" name="password" ng-model="password"
                ng-pattern="/^[A-Za-z0-9]+$/" ng-minlength="8" ng-maxlength="16"
                ng-model-options="{ updateOn: 'blur' }">
        <!--這里有2個(gè)驗(yàn)證規(guī)則,第一個(gè)是只能是數(shù)字或者字母乾翔,第二個(gè)是長(zhǎng)度要在8-16位 使用ng-messages優(yōu)先提示格式爱葵,然后提示長(zhǎng)度-->
        <div ng-messages="userForm.password.$error" >
            <span ng-message="pattern" class="help-block">密碼只能是數(shù)字或英文字母</span>
            <span ng-message="minlength" class="help-block">密碼長(zhǎng)度最短8位</span>
            <span ng-message="maxlength" class="help-block">密碼長(zhǎng)度最長(zhǎng)16位</span>
        </div>
    </div>

    <div class="form-group" style="height: 70px;" ng-class="{'has-error' : change && userForm.email.$invalid  && !userForm.email.$pristine}">
        <label>郵箱</label>
        <input type="email" class="form-control" name="email" ng-model="email"
                ng-blur="change=true" ng-focus="change=false">
        <span ng-show="change && userForm.email.$invalid  && !userForm.email.$pristine" class="help-block">郵箱格式錯(cuò)誤</span>
    </div>
    <button type="submit" class="btn btn-primary">提交</button>
</form>
<!-- 模態(tài)彈出窗 -->
<div class="modal fade" id="showMsgDiv">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
                <h4 class="modal-title">提示信息</h4>
            </div>
            <div class="modal-body">
                <p id="showMsg"></p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">關(guān)閉</button>
                <!--<button type="button" class="btn btn-primary">保存</button>-->
            </div>
        </div><!-- /.modal-content -->
    </div><!-- /.modal-dialog -->
</div><!-- /.modal -->
</body>
</html>
20190826_001900[00-00-00--00-00-15].gif
提交時(shí)驗(yàn)證

提交時(shí)驗(yàn)證的原理也是通過(guò)angularJS的雙向數(shù)據(jù)綁定原理,這里因?yàn)樽隽伺袛辔谋究蚴欠袷褂梅磁ǎ薷奶峤坏尿?yàn)證方法萌丈,在提交的時(shí)候把所有文本框設(shè)置為已經(jīng)使用,然后還做了個(gè)全局變量雷则,是否提交辆雾,控制ng-show和ng-messages 判斷表達(dá)式

app.js

var formApp = angular.module("formApp",["ngMessages"]);
formApp.controller("formController",function ($scope,$log) {
    // 失去焦點(diǎn)驗(yàn)證變量
    $scope.changeFlagBon = false;
    // 提交變量
    $scope.isSubmit = false;
    
    // form 提交時(shí)的方法
    $scope.submitValid = function (isValid,userForm) {
        if(!isValid) {
            // 提交的時(shí)候所有的輸入框都設(shè)置為已經(jīng)使用
            userForm.userName.$pristine =false;
            userForm.password.$pristine =false;
            userForm.email.$pristine =false;
            $scope.changeFlagBon = true;
            
            // 處理更詳細(xì)的驗(yàn)證

            // 提交變量設(shè)置為已經(jīng)提交
            $scope.isSubmit = true;

            $('#showMsg').text("驗(yàn)證不通過(guò),請(qǐng)檢查月劈!");
            $('#showMsgDiv').modal();
        }else {
            // 處理提交邏輯
        }
    }
    
    // ng-blur  ng-focus  獲取焦點(diǎn)度迂,失去焦點(diǎn)方法
    $scope.changeFlag = function (flag) {
        $scope.changeFlagBon = flag;
    }
});


index.html

<!DOCTYPE html>
<html lang="en" ng-app="formApp">
<head>
    <meta charset="UTF-8">
    <title>表單驗(yàn)證</title>
    <link rel="stylesheet" href="/bootstrap-3.3.7/dist/css/bootstrap.css">
    <link rel="stylesheet" href="/bootstrap-3.3.7/dist/css/bootstrap-theme.min.css">
    <script  src="/lib/angular/angular.js"></script>
    <script  src="/lib/angular-messages/angular-messages.js"></script>
    <script  src="../../js/jquery-1.9.1/jquery.js"></script>
    <script src="/bootstrap-3.3.7/dist/js/bootstrap.js"></script>
    <script src="app.js"></script>
    <style>
        body
        {   padding-top:30px;
            padding-left: 600px;
        }
    </style>
</head>
<body ng-controller="formController">
<di class = 'page-header'><h3>AngularJs 表單驗(yàn)證</h3></di>
<!-- novalidate 禁用自帶的驗(yàn)證規(guī)則-->
<form name ='userForm' novalidate ng-submit="submitValid(userForm.$valid,userForm)" style="width: 300px;">
    <div class="form-group"  style="height: 70px;" ng-class="{'has-error' : userForm.userName.$invalid && !userForm.userName.$pristine}">
        <label>用戶(hù)名</label>
        <input type="text" class="form-control" name="userName" ng-model="userName" required
                ng-model-options="{ updateOn: 'blur' }">
        <!--必填單純判斷會(huì)在頁(yè)面加載的時(shí)候就顯示錯(cuò)誤提示藤乙,可以先判斷表單是否未使用$pristine 可以避免頁(yè)面加載進(jìn)來(lái)就提示錯(cuò)誤-->
        <span ng-show="userForm.userName.$invalid && !userForm.userName.$pristine" class="help-block">必填項(xiàng)</span>
    </div>

    <div class="form-group" style="height: 70px;" ng-class="{'has-error' :isSubmit && userForm.password.$invalid && !userForm.password.$pristine}">
        <label>密碼</label>
        <input type="text" class="form-control" name="password" ng-model="password" required
                ng-pattern="/^[A-Za-z0-9]+$/" ng-minlength="8" ng-maxlength="16"
                ng-model-options="{ updateOn: 'blur' }">
        <!--這里有2個(gè)驗(yàn)證規(guī)則,第一個(gè)是只能是數(shù)字或者字母英岭,第二個(gè)是長(zhǎng)度要在8-16位 使用ng-messages優(yōu)先提示格式湾盒,然后提示長(zhǎng)度-->
        <div ng-messages="userForm.password.$error" ng-if="isSubmit">
            <span ng-message="pattern" class="help-block">密碼只能是數(shù)字或英文字母</span>
            <span ng-message="minlength" class="help-block">密碼長(zhǎng)度最短8位</span>
            <span ng-message="maxlength" class="help-block">密碼長(zhǎng)度最長(zhǎng)16位</span>
            <span ng-message="required" class="help-block">密碼必填</span>
        </div>
    </div>
    <div class="form-group" style="height: 70px;" ng-class="{'has-error' : changeFlagBon && userForm.email.$invalid  && !userForm.email.$pristine}">
        <label>郵箱</label>
        <input type="email" class="form-control" name="email" ng-model="email" required
                ng-blur="changeFlag(true)" ng-focus="changeFlag(false)">
        <span ng-show="changeFlagBon && userForm.email.$invalid  && !userForm.email.$pristine" class="help-block">郵箱格式錯(cuò)誤</span>
    </div>
    <button type="submit" class="btn btn-primary">提交</button>
</form>
<!-- 模態(tài)彈出窗 -->
<div class="modal fade" id="showMsgDiv">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
                <h4 class="modal-title">提示信息</h4>
            </div>
            <div class="modal-body">
                <p id="showMsg"></p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">關(guān)閉</button>
                <!--<button type="button" class="btn btn-primary">保存</button>-->
            </div>
        </div><!-- /.modal-content -->
    </div><!-- /.modal-dialog -->
</div><!-- /.modal -->
</body>
</html>
20190826_003131[00-00-00--00-00-29].gif
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末湿右,一起剝皮案震驚了整個(gè)濱河市诅妹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌毅人,老刑警劉巖吭狡,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異丈莺,居然都是意外死亡划煮,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)缔俄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)弛秋,“玉大人,你說(shuō)我怎么就攤上這事俐载⌒仿裕” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵遏佣,是天一觀的道長(zhǎng)挖炬。 經(jīng)常有香客問(wèn)我,道長(zhǎng)状婶,這世上最難降的妖魔是什么意敛? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮膛虫,結(jié)果婚禮上草姻,老公的妹妹穿的比我還像新娘。我一直安慰自己稍刀,他們只是感情好撩独,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著掉丽,像睡著了一般跌榔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捶障,一...
    開(kāi)封第一講書(shū)人閱讀 51,155評(píng)論 1 299
  • 那天僧须,我揣著相機(jī)與錄音,去河邊找鬼项炼。 笑死担平,一個(gè)胖子當(dāng)著我的面吹牛示绊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播暂论,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼面褐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了取胎?” 一聲冷哼從身側(cè)響起展哭,我...
    開(kāi)封第一講書(shū)人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎闻蛀,沒(méi)想到半個(gè)月后匪傍,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡觉痛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年役衡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片薪棒。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡手蝎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出俐芯,到底是詐尸還是另有隱情棵介,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布泼各,位于F島的核電站鞍时,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏扣蜻。R本人自食惡果不足惜逆巍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望莽使。 院中可真熱鬧锐极,春花似錦、人聲如沸芳肌。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)亿笤。三九已至翎迁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間净薛,已是汗流浹背汪榔。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肃拜,地道東北人痴腌。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓雌团,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親士聪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子锦援,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

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

  • AngularJS AngularJS 是一個(gè) JavaScript 框架。它可通過(guò) 標(biāo)簽添加到 HTML 頁(yè)...
    壞忎閱讀 294評(píng)論 2 3
  • ng-model 指令ng-model 指令 綁定 HTML 元素 到應(yīng)用程序數(shù)據(jù)剥悟。ng-model 指令也可以:...
    壬萬(wàn)er閱讀 868評(píng)論 0 2
  • 1. 介紹 AngularJS是一款由Google公司開(kāi)發(fā)維護(hù)的前端MVC框架灵寺,其克服了HTML在構(gòu)建應(yīng)用上的諸多...
    崔皓翔閱讀 835評(píng)論 0 5
  • 一、介紹 AngularJS是一款由Google公司開(kāi)發(fā)維護(hù)的前端MVC框架懦胞,其克服了HTML在構(gòu)建應(yīng)用上的諸多不...
    福爾摩雞閱讀 765評(píng)論 0 2
  • AngularJS AngularJS概述 介紹 簡(jiǎn)稱(chēng):ng Angular是一個(gè)MVC框架 其他前端框架: Vu...
    我愛(ài)開(kāi)發(fā)閱讀 2,337評(píng)論 0 8