2016-01-06 2 views
2

У меня есть выпадающее меню со значениями, которые я использую в раскрывающемся списке для отображения элементов. Я хочу обработать событие click и распечатать индекс элемента в массиве. Код вида выглядит так:не удалось получить индекс выбранного элемента в AngularJs

<!DOCTYPE html> 
<html ng-app="myApp"> 
    <head> 
    <link data-require="[email protected]" data-semver="3.3.6" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.css" /> 
    <link data-require="[email protected]" data-semver="4.5.0" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css" /> 
    <script data-require="[email protected]*" data-semver="2.1.4" src="https://code.jquery.com/jquery-2.1.4.js"></script> 
    <script data-require="[email protected]*" data-semver="3.3.6" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js">  </script> 
    <script data-require="[email protected]" data-semver="1.4.7" src="https://code.angularjs.org/1.4.7/angular.js"></script> 
    <link rel="stylesheet" href="style.css" /> 
    <script src="script.js"></script> 
    </head> 

    <body ng-controller="myController"> 
    <select ng-options="item for item in items" ng-model="item" ng-change="handleClick($index)"> 
    </select> 

</html> 

На контроллере у меня есть функция, но я не получаю индекс при выборе.

// Code goes here 

angular.module("myApp", []). 

controller("myController", function($scope){ 
    $scope.handleClick = function(index){ 
    console.log("came inside the handleClick function with the currext index "+index); 
    } 
    $scope.items=["pradeep","praveen", "sagar","vinod"]; 
}) 

Пожалуйста, дайте мне знать, куда я иду не так. ссылка на Plunkr - Link to Plnkr

ответ

3

$index не определяется при использовании ngOptions - ваш лучший выбор, чтобы использовать indexOf и найти индекс:

<select ng-options="item for item in items" ng-model="selectedItem" ng-change="handleClick(selectedItem)"> 

а также JS:

$scope.handleClick = function(selectedItem) { 
    var index = $scope.items.indexOf(selectedItem); 
} 
Смежные вопросы