假设我有以下内容:
<button ng-repeat="{{item in items}}" ng-click="{{item.name}}Function()">{{item.name}}</button>
我需要能够根据item.name(例如
)动态更改ng-clickfirstItemFunction()
secondItemFunction()
等
答案 0 :(得分:1)
我会移动逻辑来确定调用你的javascript的函数。
HTML
<button ng-repeat="{{item in items}}" ng-click="figureOutFunction(item)">{{item.name}}</button>
javascript
$scope.figureOutFunction(item){
if(item.name == "firstItem"){
firstItemFunction();
}
else if(item.name == "secondItem"){
secondItemFunction();
}
};
修改强>
如果您想避免切换,可以这样做:
HTML
<button ng-repeat="{{item in items}}" ng-click="item.action()">{{item.name}}</button>
的javascript
var firstItemFunction = function(){
...
};
var secondItemFunction = function(){
...
};
$scope.items = [{
name: 'firstItem',
action: firstItemFunction
}, {
name: 'secondItem',
action: secondItemFunction
}];
我会避免创建调用其他人的不必要的函数。
答案 1 :(得分:1)
如果$scope
引用了这些函数:
$scope.items =
[
{ name: 'firstItemFunction' },
{ name: 'secondItemFunction' }
];
$scope.firstItemFunction = function () {
console.log('firstItemFunction');
};
$scope.secondItemFunction = function () {
console.log('secondItemFunction');
};
HTML:
<button ng-repeat="item in items" ng-click="this[item.name]()">
{{item.name}}
</button>
演示: http://plnkr.co/edit/FSrGumlZqm4Rdku6I3X5?p=preview
可替换地:
$scope.items = [{
name: 'firstItemFunction'
}, {
name: 'secondItemFunction'
}];
$scope.firstItemFunction = function() {
console.log('firstItemFunction');
}
$scope.secondItemFunction = function() {
console.log('secondItemFunction');
}
$scope.execute = function(action) {
$scope[action]();
};
和
<button ng-repeat="item in items" ng-click="execute(item.name)">
{{item.name}}
</button>
演示: http://plnkr.co/edit/6jATpgEAvFgTFXbvQ6IE?p=preview
如果全局定义了函数,请使用上面的HTML,注入$window
和:
$scope.items = [{
name: 'firstItemFunction'
}, {
name: 'secondItemFunction'
}];
$scope.execute = function(action) {
$window[action]();
};