javascript - AngularJS - 为什么选择下拉菜单没有 $event on change

标签 javascript html angularjs

我是 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
    }
}

看看这个 fiddle http://jsfiddle.net/QfZZH/ . Click 传递一个有效的 $event 但 change 没有。有人可以解释这种行为吗?

最佳答案

很明显,文档说 ngClick 将传递事件,但 ngChange 没有这样的文档。

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

关于javascript - AngularJS - 为什么选择下拉菜单没有 $event on change,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18555425/

相关文章:

javascript - mongodb 无法在 mac os 上启动

javascript - html中的表格边框

javascript - toastr 没有出现在 ui-router 子状态中

angularjs - 在 angularjs 应用程序中使用 winston.js

javascript - 在 Promise 解决后解决值

javascript - 在单独的 js 文件中处理所有带有前缀的路由

jQuery:如何确定一个或多个文本框是否为空

html - 如何让HTML内容占据所有可用高度?

html - 像 StackOverflow 一样的响应式导航栏

javascript - AngularJS ngSubmit 仅脏字段