电竞比分网-中国电竞赛事及体育赛事平台

分享

angularjs學(xué)習(xí)筆記-事件指令

 huhuwoo 2015-10-10

ngClick

適用標(biāo)簽:所有
觸發(fā)條件:單擊

#html
<div ng-controller="LearnCtrl">
    <div ng-click="click()">click me</div>
    <button ng-click="click()">click me</button>
</div>

#script
angular.module('learnModule', [])

        .controller('LearnCtrl', function ($scope) {
            $scope.click = function () {
                alert('click');
            }
        });

ngDblclick

適用標(biāo)簽:所有
觸發(fā)條件:雙擊

#html
<div ng-controller="LearnCtrl">
    <div ng-dblclick="dblclick()">click me</div>
    <button ng-dblclick="dblclick()">click me</button>
</div>

#script
angular.module('learnModule', [])

        .controller('LearnCtrl', function ($scope) {
            $scope.dblclick = function () {
                alert('click');
            }
        });

ngBlur

適用標(biāo)簽:

  • a
  • input
  • select
  • textarea

觸發(fā)條件:失去焦點

#html
<div ng-controller="LearnCtrl">
    <a href="" ng-blur="blur()">link</a>

    <input type="text" ng-blur="blur()"/>
    <textarea cols="30" rows="10" ng-blur="blur()"></textarea>
    <select ng-blur="blur()">
        <option>----</option>
        <option>jacky</option>
        <option>rose</option>
    </select>
</div>

#script
angular.module('learnModule', [])

        .controller('LearnCtrl', function ($scope) {
            $scope.blur = function () {
                alert('blur');
            }
        });

ngFocus

適用標(biāo)簽:

  • a
  • input
  • select
  • textarea

觸發(fā)條件:獲取焦點

#html
<div ng-controller="LearnCtrl">
    <a href="" ng-focus="focus()">link</a>

    <input type="text" ng-focus="focus()"/>
    <textarea cols="30" rows="10" ng-focus="focus()"></textarea>
    <select ng-focus="focus()">
        <option>----</option>
        <option>jacky</option>
        <option>rose</option>
    </select>
</div>

#script
angular.module('learnModule', [])

        .controller('LearnCtrl', function ($scope) {
            $scope.focus= function () {
                alert('focus');
            }
        });

ngChange

適用標(biāo)簽:input
觸發(fā)條件:model更新

輸入框的內(nèi)容改變并不代表model的值更新。按我的理解,一般當(dāng)兩個狀態(tài)互相切換時,model值會更新。兩個狀態(tài)我稱之為合法狀態(tài)和不合法狀態(tài)。

不合法的狀態(tài):輸入的內(nèi)容不符合type類型,如email類型。輸入的內(nèi)容不符合校驗條件,如ngMinlength。不合法的狀態(tài)下,model會被更新成undefined。

合法的狀態(tài):輸入的內(nèi)容是符合類型和校驗條件的。

#html
<div ng-controller="LearnCtrl">
    <input type="text" ng-model="text" ng-change="change()" ng-minlength="5"/>
</div>

#script
angular.module('learnModule', [])

        .controller('LearnCtrl', function ($scope) {
            //$scope.text='';
            $scope.change = function () {
                alert('change');
            }            
        });

初始化和不初始化text的條件下,change觸發(fā)是不一樣的哦,這里涉及到model初始化和更新機制。

ngCopy

適用標(biāo)簽:

  • a
  • input
  • select
  • textarea

官方api上說使用的標(biāo)簽是這些,我沒明白a和select復(fù)制有啥子用。另外,我換個div實際上也能觸發(fā)copy事件。一般常用的就是input和textarea。

觸發(fā)條件:復(fù)制。鼠標(biāo)右鍵復(fù)制和快捷鍵Ctrl+C都會觸發(fā)。

#html
<div ng-controller="LearnCtrl">
    <input type="text" ng-copy="copy()"/>
    <textarea cols="30" rows="10" ng-copy="copy()"></textarea>
</div>

#script
angular.module('learnModule', [])

        .controller('LearnCtrl', function ($scope) {
            $scope.copy = function () {
                alert('copy');
            }
        });

ngCut

適用標(biāo)簽:

  • a
  • input
  • select
  • textarea

觸發(fā)條件:剪切。鼠標(biāo)右鍵剪切和快捷鍵Ctrl+X都會觸發(fā)。

#html
<div ng-controller="LearnCtrl">
    <input type="text" ng-cut="cut()"/>
    <textarea cols="30" rows="10" ng-cut="cut()"></textarea>
</div>

#script
angular.module('learnModule', [])

        .controller('LearnCtrl', function ($scope) {
            $scope.cut = function () {
                alert('cut');
            }
        });

ngPaste

適用標(biāo)簽:

  • a
  • input
  • select
  • textarea

觸發(fā)條件:粘貼。鼠標(biāo)右鍵粘貼和快捷鍵Ctrl+V都會觸發(fā)。

#html
<div ng-controller="LearnCtrl">
    <input type="text" ng-paste="paste()"/>
    <textarea cols="30" rows="10" ng-paste="paste()"></textarea>
</div>

#script
angular.module('learnModule', [])

        .controller('LearnCtrl', function ($scope) {
            $scope.paste = function () {
                alert('paste');
            }
        });

ngKeydown

適用標(biāo)簽:所有

個人感覺還是input和textarea比較常用

觸發(fā)條件:鍵盤按鍵按下

要把$event傳過去,一般都是要判斷按了哪個按鍵的。

#html
<div ng-controller="LearnCtrl">
    <input type="text" ng-keydown="keydown($event)"/>
    <textarea cols="30" rows="10" ng-keydown="keydown($event)"></textarea>
</div>

#script
angular.module('learnModule', [])

        .controller('LearnCtrl', function ($scope) {
            $scope.keydown = function ($event) {
                alert($event.keyCode);
            }
        });

ngKeyup

適用標(biāo)簽:所有

個人感覺還是input和textarea比較常用

觸發(fā)條件:鍵盤按鍵按下并松開

#html
<div ng-controller="LearnCtrl">
    <input type="text" ng-keyup="keyup($event)"/>
    <textarea cols="30" rows="10" ng-keyup="keyup($event)"></textarea>
</div>

#script
angular.module('learnModule', [])

        .controller('LearnCtrl', function ($scope) {
            $scope.keyup = function ($event) {
                alert($event.keyCode);
            }
        });

ngKeypress

適用標(biāo)簽:所有

個人感覺還是input和textarea比較常用

觸發(fā)條件:鍵盤按鍵按下

#html
<div ng-controller="LearnCtrl">
    <input type="text" ng-keypress="keypress($event)"/>
    <textarea cols="30" rows="10" ng-keypress="keypress($event)"></textarea>
</div>

#script
angular.module('learnModule', [])

        .controller('LearnCtrl', function ($scope) {
            $scope.keypress = function ($event) {
                alert($event.keyCode);
            }
        });

keydown,keypress,keydown三者區(qū)別

引發(fā)事件的按鍵

非字符鍵不會引發(fā) KeyPress 事件,但非字符鍵卻可以引發(fā) KeyDown 和 KeyUp 事件。

事件引發(fā)的時間

KeyDown 和 KeyPress 事件在按下鍵時發(fā)生,KeyUp 事件在釋放鍵時發(fā)生。

事件發(fā)生的順序

KeyDown -> KeyPress -> KeyUp。如果按一個鍵很久才松開,發(fā)生的事件為:KeyDown -> KeyPress -> KeyDown -> KeyPress -> KeyDown -> KeyPress -> ... -> KeyUp。

  • KeyDown觸發(fā)后,不一定觸發(fā)KeyUp,當(dāng)KeyDown 按下后,拖動鼠標(biāo),那么將不會觸發(fā)KeyUp事件。
  • KeyPress主要用來捕獲數(shù)字(注意:包括Shift+數(shù)字的符號)、字母(注意:包括大小寫)、小鍵盤等除了F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜單鍵}、{開始鍵}和方向鍵外的ANSI字符。
  • KeyDown 和KeyUp 通??梢圆东@鍵盤除了PrScrn所有按鍵(這里不討論特殊鍵盤的特殊鍵)。
  • KeyPress 只能捕獲單個字符。
  • KeyDown 和KeyUp 可以捕獲組合鍵。
  • KeyPress 可以捕獲單個字符的大小寫。
  • KeyDown和KeyUp 對于單個字符捕獲的KeyValue 都是一個值,也就是不能判斷單個字符的大小寫。
  • KeyPress 不區(qū)分小鍵盤和主鍵盤的數(shù)字字符。
  • KeyDown 和KeyUp 區(qū)分小鍵盤和主鍵盤的數(shù)字字符。
  • 其中PrScrn 按鍵KeyPress、KeyDown和KeyUp 都不能捕獲。

ngMousedown

適用標(biāo)簽:所有
觸發(fā)條件:鼠標(biāo)按下,左右中間按下都會觸發(fā)

#html
<div ng-controller="LearnCtrl">
    <button ng-mousedown="mousedown($event)">button</button>
</div>

#script
angular.module('learnModule', [])

        .controller('LearnCtrl', function ($scope) {
            $scope.mousedown = function ($event) {
                alert($event.which);
            }
        });

ngMouseup

適用標(biāo)簽:所有
觸發(fā)條件:鼠標(biāo)按下彈起,左右中間按下彈起都會觸發(fā)

#html
<div ng-controller="LearnCtrl">
    <button ng-mouseup="mouseup($event)">button</button>
</div>

#script
angular.module('learnModule', [])

        .controller('LearnCtrl', function ($scope) {
            $scope.mouseup = function ($event) {
                alert($event.which);
            }
        });

ngMouseenter

適用標(biāo)簽:所有
觸發(fā)條件:鼠標(biāo)進入

#html
<div ng-controller="LearnCtrl">
    <button ng-mouseenter="mouseenter()">button</button>
</div>

#script
angular.module('learnModule', [])

        .controller('LearnCtrl', function ($scope) {
            $scope.mouseenter = function () {
                alert('mouseenter');
            }
        });

ngMouseleave

適用標(biāo)簽:所有
觸發(fā)條件:鼠標(biāo)離開

#html
<div ng-controller="LearnCtrl">
    <button ng-mouseleave="mouseleave()">button</button>
</div>

#script
angular.module('learnModule', [])

        .controller('LearnCtrl', function ($scope) {
            $scope.mouseleave = function () {
                alert('mouseleave');
            }
        });

ngMousemove

適用標(biāo)簽:所有
觸發(fā)條件:鼠標(biāo)移動

#html
<div ng-controller="LearnCtrl">
    <button ng-mousemove="mousemove()">button</button>
</div>

#script
angular.module('learnModule', [])

        .controller('LearnCtrl', function ($scope) {
            $scope.mousemove = function () {
                alert('mousemove');
            }
        });

ngMouseover

適用標(biāo)簽:所有
觸發(fā)條件:鼠標(biāo)進入
個人感覺和ngMouseenter沒啥子區(qū)別,求大神指導(dǎo)下。最好有代碼

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多