5

我是 AngularJS 的新手。我有一个问题,为什么不ng-change通过 $event?

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通过有效的 $event 但change没有。有人可以解释这种行为吗?

4

1 回答 1

5

只是为了说明这一点,文档说这ngClick将通过事件,但ngChange没有这样的文档。

那么,您要问的是为什么 Angular 的设计师选择这样做?我的想法是ngClick由于单击而触发,因此与指令触发相关联的鼠标事件是有道理的。ngChange另一方面是更改模型的任何用户操作的结果,这可能与各种事件相关联,而不是与一个特定事件相关联。

于 2013-09-01T05:18:04.763 回答