Множественный вызов onselect из выбранного элемента с помощью Angular ng-repeat

Я использую элемент выбора HTML для отображения поля объекта, в котором есть перечисляемые значения.

На странице у меня есть несколько полей для объекта, поэтому несколько элементов выбора.

Я использую Angular ng-repeat для отображения каждого поля, создавая выбор в ng-repeat в строке моей таблицы. Я хочу зафиксировать событие «onselect», когда элемент выбирается из любого из раскрывающихся списков, проблема в том, что всякий раз, когда пользователь выбирает значение в одном раскрывающемся списке, событие срабатывает для всех раскрывающихся списков на странице.

Мой HTML:

<div ng-app>
<div ng:controller="TodoCtrl">
    <table>
        <tr ng-repeat="prop in customForm">
            <td>{{prop.legend}}</td>
            <td>
                <select ng-name="prop.name" ng-model="entity[prop.name]"
                        ng-options="val as val for val in prop.enumeratedValues"
                        onselect="{{fireSelectEvent(prop.name)}}"></select>
            </td>
        </tr>
        <tr><td>Calls Made</td></tr>
        <tr ng-repeat="call in callLog">
            <td>{{call}}</td>
        </tr>    
    </table>
</div>
</div>

Мой контроллер:

//'use strict';
function TodoCtrl($scope) {


    $scope.customForm =
    [
        {name:"aval", legend: "A Value", enumeratedValues: ["1","2","3"], editable: true},
        {name:"bval", legend: "B Value", enumeratedValues: ["4","5","6"], editable: true},
        {name:"cval", legend: "C Value", enumeratedValues: ["7","8","9"], editable: true}
    ];

    $scope.entity = {};
    $scope.callLog = [];

    $scope.fireSelectEvent = function( propName )
    {
        console.log("Prop=" + propName + " value=" + $scope.entity[propName]);


        $scope.callLog.push( propName );        
    }
}

Моя скрипка:

http://jsfiddle.net/utgwG/

Удачи. Мы все рассчитываем на тебя.


person Sparm    schedule 19.04.2013    source источник


Ответы (1)


Что такое атрибут onselect? Вы видите fireSelectEvent срабатывание столько раз, потому что вы связали атрибут onselect с помощью угловой интерполяции< /а>.

Я предполагаю, что вы хотите сделать следующее: ng-change="fireSelectEvent(prop.name)"

Ваша обновленная скрипта: http://jsfiddle.net/utgwG/2/

person Langdon    schedule 19.04.2013