选择中的ng-change指令无法正常工作

时间:2015-10-11 03:10:27

标签: javascript html angularjs angularjs-directive

我有一个选择输入和一个在更改所选值时调用的函数。当我使用键盘箭头键更改值时,模型不会更新(第一次)。 有人可以告诉我为什么?

Here is my Fiddle

JS:

var app = angular.module('myApp',[]);

function mainController($scope) {
    $scope.people = [
        {
            id: 1,
            name: 'Julius'
        },
        {
            id: 2,
            name: 'Julius Rock'
        },
        {
            id: 3,
            name: 'Christopher'
        }
    ];

    $scope.selectionChanged = function() {
        console.log('test');
    };

}
app.controller('mainController', mainController);

HTML:

<div ng-controller="mainController">
    <!-- If you change the value with the arrows ng-change doesn't work on the first change. -->
    <select ng-model="selected" ng-options="person.name for person in people track by person.id" ng-change="selectionChanged()"></select>

    <span>{{selected}}</span>    
</div>

提前致谢。

2 个答案:

答案 0 :(得分:2)

您想要在select元素上进行自动对焦,以便从第一次开始。在select

上添加了自动对焦功能

代码已更改:

<select ng-model="selected" ng-options="person.name for person in people track by person.id" ng-change="selectionChanged()" autofocus></select>

Updated Fiddle

答案 1 :(得分:2)

这是一个已知问题,事实上,它仍然是一个开放的问题。有几种方法可以让您的工作达到预期效果。您可以在此处阅读项目问题跟踪器中的相关信息:select/ngOptions fails to update model after keyboard selection。要解决此问题,您可以在<option>内放置一个空的<select>。请注意以下更改......

<select ng-model="selected" ng-options="person.name for person in people track by person.id" ng-change="selectionChanged()">
    <option value=""></option>
</select>

JSFiddle Link - 更新了演示