我有一个下拉菜单,其中包含一个,两个,三个和三个不同的函数,当我选择一个值时如何触发每个函数,例如,如果我选择一个函数,如果选择值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')
}
}
答案 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+'()')
}
答案 1 :(得分:1)
$('.mapDropDown').change(function(){
functionName = this.value;
function(functionName){
$scope[functionName]();
}
})