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一方、モデルを変更するユーザー アクションの結果であり、特定の 1 つのイベントではなく、あらゆる種類のイベントに関連付けることができます。

于 2013-09-01T05:18:04.763 に答える