每次从下拉菜单中选择项目时如何触发不同的功能

时间:2016-06-28 20:22:32

标签: javascript angularjs

我有一个下拉菜单,其中包含一个,两个,三个和三个不同的函数,当我选择一个值时如何触发每个函数,例如,如果我选择一个函数,如果选择值2,则触发两个函数两个触发器等。 / p>

<select class='mapDropDown' ng-options='x for x in name' ng-model='selectedFunction'>
<option value=''> Please Select </option>
</select>

app.js

 function MyCtrl($scope) {
        $scope.name = ['one', 'two', 'three']

        function one(){
        alert('you triggered first function')
        }

        function two(){
        alert('you triggered second function')
        }

        function three(){
        alert('you triggered second function')
        }
    }

jsfiddle

2 个答案:

答案 0 :(得分:1)

您可以传递当前选定的值myFunction方法&amp;然后该方法将决定如何在选择框的更改时调用下面的其他方法。为了实现相同的效果,您需要将所有功能放在范围内。

<强>标记

<select class='mapDropDown' ng-options='x for x in name' ng-model='selectedFunction'
  ng-change="myFunction(selectedFunction)">
   <option value=''> Please Select </option>
</select>

<强>码

$scope.myFunction = function(functionName){
   $scope[functionName]();
}

如果您不想在$scope中放置方法,可以将它们放在服务中并按照我们第一次接近的方式调用它们。如果你想在控制器中保持功能而不是添加范围,你可以使用下面的功能

$scope.myFunction = function(functionName) {
   eval(functionName+'()')
}

Demo Fiddle

答案 1 :(得分:1)

$('.mapDropDown').change(function(){
 functionName = this.value; 

 function(functionName){
   $scope[functionName]();
 }
})