2012-09-28 91 views
68

我有一个简单的删除按钮,它将接受一个字符串或数字,但不会接受一个ng模型变量(不知道这是否是正确的术语)。如何将绑定变量传递给ng-click函数?

<button class="btn btn-danger" ng-click="delete('{{submission.id}}')">delete</button> 

产生:

<button class="btn btn-danger" ng-click="delete('503a9742d6df30dd77000001')">delete</button> 

然而,当我点击没有任何反应。如果我硬编码一个变量,那么它工作得很好。我想我只是不做事的“角”的方式,但我不知道这样是什么:)

这里是我的控制器代码:

$scope.delete = function (id) { 
    alert('delete ' + id); 
} 

回答

131

你并不需要使用在ng-click大括号({{}}),尝试:

<button class="btn btn-danger" ng-click="delete(submission.id)">delete</button> 
+2

我将如何再穿过一个功能submission.id?从我理解的函数(submission.id){}不会在我的控制器中工作,因为函数不能在除句点之外 –

+1

*澄清* ::在角度值传递给属性时,不需要使用大括号,但你仍然需要他们在内部的HTML标记。例如: Rick

+0

我想知道为什么在传递括号的时候为了代替变量值而使用括号:''有趣的是,错误的方式看起来像是在开发人员工具窗口中正确呈现。 – jaybro

1

ngClick指令结合的表达。它直接执行Angular代码(如ngIf,ngChange等),而不需要{{ }}

angular.module('app', []).controller('MyCtrl', function($scope) { 
 
    $scope.submission = { id: 100 }; 
 

 
    $scope.delete = function(id) { 
 
     alert(id + " deleted!"); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="app" ng-controller="MyCtrl"> 
 
    <button ng-click="delete(submission.id)">Delete</button> 
 
</div>