如何识别数组中的对象位置

时间:2014-07-19 12:22:55

标签: arrays angularjs object select dropdownbox

我将一个对象数组加载到一个选择框中。用户进行选择...如何识别他们选择的数组对象,以便在下游工作中使用它?

例如,如果用户选择数组中的第二个对象...如何识别选择是数组中的第二项?

http://jsfiddle.net/silvajeff/LRXkV/3/

angular.module('demoApp', []).controller('DemoController', function ($scope) {

$scope.captions = [{
    name: 'A',
    value: 'a'
}, {
    name: 'B',
    value: 'b'
}, {
    name: 'C',
    value: 'c'
}, {
    name: 'D',
    value: 'd'
}, {
    name: 'E',
    value: 'e'
}];

//how could I determine that 3 should be the number used in the expression below
$scope.selectedCaption = $scope.captions[3];
});

2 个答案:

答案 0 :(得分:1)

您可以在数组中查看所选项目的索引:

$scope.$watch(function() {
    return $scope.captions.indexOf($scope.selectedCaption);
  },
  function(newVal, oldVal) {
    if (newVal != oldVal) {
      alert('New index of selected caption :' + newVal);
    }
  });

或者只是注意selectedCaption并在侦听器函数中获取索引:

$scope.$watch('selectedCaption',
function (newVal, oldVal) {
    if (newVal != oldVal) {
        alert('New index of selected caption :' + $scope.captions.indexOf(newVal));
    }
});

答案 1 :(得分:0)

您的代码位于正文onload中,因此该模块甚至未正确初始化,这就是您的小提琴无法正常工作的原因。

$scope.selectedCaption是select的模型,随着选择值的变化会自动更新。

http://jsfiddle.net/LRXkV/2/