2013-05-29 23 views
237

我一直在寻找如何执行此操作,但目前为止我找不到任何相关的内容:(: 我可以嵌套两个函数,但是我只是想知道这是否可能?这从字面上:如何在一个ng-click中添加许多功能?

<td><button class="btn" ng-click="edit($index) open()">Open me!</button></td> 

此刻我的JS代码:

$scope.open = function() { 
    $scope.shouldBeOpen = true; 
};  

$scope.edit = function(index){ 

    var content_1, content_2; 
     content_1 = $scope.people[index].name; 
     content_2 = $scope.people[index].age; 

    console.log(content_1); 
}; 

我想调用两个功能,只需点击一下,我怎么能在angularJS做到这一点 我认为它”当你添加多个类时,就像在CSS中那样直截了当......但它不是:(

回答

535

你有2种选择:

  1. 创建包裹两种方法的第三种方法。这里的优点是你在你的模板中放置较少的逻辑。

  2. 否则,如果您想在ng-click中添加2个呼叫,您可以添加';' edit($index)这样

    ng-click="edit($index); open()"

后在这里看到:http://jsfiddle.net/laguiz/ehTy6/

+1

我用两个方法(它所需的内容),但*不*有一个'NG-click'两个电话是什么原因? –

+0

这两个工作只是试图把逻辑放在你的控制器的问题。在这种情况下不是什么大问题:) – Maxence

+0

我发现选项2绝对没有错,因为它是一个指令(如ng-click)的作业,可将用户操作映射到作用域行为。 – ThinkingInBits

-14
ng-click "$watch(edit($index), open())" 
+1

这里的语法不正确。如上所述,分号是分隔符;不是逗号......其中包括... –

9

可以调用具有多种功能的 ';'

ng-click="edit($index); open()" 
2

试试这个:

  • 制作的功能
  • 集合作出这样的循环遍历和集合中执行所有功能的功能。
  • 添加功能的HTML
array = [ 
    function() {}, 
    function() {}, 
    function() {} 
] 

function loop() { 
    array.forEach(item) { 
     item() 
    } 
} 

ng - click = "loop()" 
相关问题