2013-09-01 99 views
5

我是AngularJS的新手。我有一個問題,爲什麼ng-change沒有通過$事件?

HTML

<div ng-controller="foo"> 
    <select ng-model="item" ng-options="opts as opts.name for opts in sels" ng-change="lstViewChange($event)" ng-click="listViewClick($event)"></select> 
</div> 

腳本

var myApp = angular.module('myApp', []); 
angular.element(document).ready(function() { 
    angular.bootstrap(document, ['myApp']); 
}); 

function foo($scope) { 
    $scope.sels = [{id: 1, name: 'a'}, {id: 2, name: 'b'}]; 

    $scope.lstViewChange = function($event){ 
     console.log('change', $event); //undefined 
    } 

    $scope.listViewClick = function($event){ 
     console.log('click', $event); //object 
    } 
} 

看一看這個小提琴http://jsfiddle.net/QfZZH/Click通過有效的$事件,但change不通過。有人可以解釋這種行爲嗎?

回答

5

只是爲了說明明顯,文檔說ngClick將通過事件,但ngChange沒有這樣的文檔。

所以,你問的是爲什麼Angular的設計師選擇這樣做?我認爲ngClick是由於點擊而觸發的,所以它會有一個與指令觸發相關的鼠標事件。另一方面,ngChange是任何改變模型的用戶操作的結果,其可能與各種事件而不是一個特定事件相關聯。

相關問題