如何从控制器中的下拉选择中获取数组中的第二个值变量?

时间:2016-10-29 20:12:18

标签: javascript angularjs arrays angularjs-scope

我希望得到一个数组列表中第二个值的变量,用户通过我的控制器中的下拉列表来选择它来做一些数学函数。

$scope.dropdown = [
{name:'Name', value:'123'}]

所以我想在用户从下拉列表中选择“名称”时拉出123。我知道如何在前端执行此操作,如:

<p> {{dropdown.value}} </p>

但我似乎无法弄清楚如何在控制器中做到这一点。

我试过了:

var variable = $scope.dropdown.value;
var variable = $scope.dropdown[0].value;
var variable = $scope.dropdown.value[0];

但似乎没有任何效果。

我现在正在使用的一个例子是:

 $scope.input1 = "";

 var rate = 2;

 $scope.dropdown = [
  {name:'Name', value:'123'}
 ];

 var activities = (Number($scope.input1) * $scope.dropdownSelection.value * rate) / 2;

 console.log(activities);

所以基本上,我希望在控制器中从用户输入和用户下拉选择以及定义的变量中执行数学函数,我似乎无法弄清楚如何在数组中获得用户选择的下拉值。

2 个答案:

答案 0 :(得分:2)

角度js方式理想情况下使用$filter,您的控制器代码可能如下所示

app.controller('MainCtrl', ['$scope', '$filter', function($scope, $filter) {

    //array
    var items = [{  id: "5", country: "UAE" }, { id: "4",  country: "India" }];

    //search value
    var id2Search = "4";

    //filter the array
    var foundItem = $filter('filter')(items, { id: id2Search  }, true)[0];

    //get the index
    var index = items.indexOf(foundItem );
}]);

答案 1 :(得分:1)

我假设您正在寻找用户从下拉列表中选择的值,该下拉列表是使用控制器上的下拉列表填充的。

这是你可以做的事情。

var app = angular.module("sampleApp", []);

app.controller("sampleController", ["$scope",
  function($scope) {
    $scope.input1 = 1;
    $scope.dropdownValues = [{
      name: 'Name',
      value: 123
    }, {
      name: 'Name-1',
      value: 456
    }, {
      name: 'Name-2',
      value: 789
    }];

    $scope.dropdownValue = 123;
    var rate = 10;

    $scope.$watch(function() {
      return $scope.dropdownValue
    }, function() {
      $scope.activities = (Number($scope.input1) * $scope.dropdownValue * rate) / 2;
    });

  }
]);
div.value {
  padding-top: 15px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js"></script>
<div ng-app="sampleApp">
  <div ng-controller="sampleController">
    <select ng-model="dropdownValue">
      <option ng-repeat="item in dropdownValues" ng-value="item.value">
        {{item.name}}
      </option>
    </select>
    <div class="value">
      Selected Value : {{dropdownValue}}
    </div>

    <div>
      Activities : {{activities}}
    </div>
  </div>
</div>