Javascript ng单击不在AngularJS中激发,而onclick则会
我正在尝试在我的应用程序中使用AngularJS,并在一定程度上取得了成功 我能够获取数据并将其显示给用户。我在Javascript ng单击不在AngularJS中激发,而onclick则会,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我正在尝试在我的应用程序中使用AngularJS,并在一定程度上取得了成功 我能够获取数据并将其显示给用户。我在ng repeat中有一个按钮,我想通过它发布删除请求。下面是我的代码 <div class="navbar-collapse collapse"> <table class="table table-striped" ng-controller="FetchViewData"> <tr> <td
ng repeat
中有一个按钮,我想通过它发布删除请求。下面是我的代码
<div class="navbar-collapse collapse">
<table class="table table-striped" ng-controller="FetchViewData">
<tr>
<td>Name</td>
<td>ID</td>
<td>Department</td>
<td></td>
</tr>
<tr ng-repeat="d in viewData">
<td>{{d.EmployeeName}}</td>
<td>{{d.EmployeeID}}</td>
<td>{{d.EmployeeDepartment}}</td>
<td>
<button class="trashButton" type="button"
name="view:_id1:_id2:_id14:_id24:btnDelete"
id="view:_id1:_id2:_id14:_id24:btnDelete"
ng-click="deleteRecord('{{d['@link'].href}}')">
<img src="/trashicon.gif"></button>
</td>
</tr>
</table>
</div>
数据被提取并正确显示
但是当单击删除按钮时,ng click=“deleteRecord({{d['@link'].href}}')”
中的代码不会触发。在Google Chrome的开发者工具中,我可以看到为代码{{d['@link'].href}}
生成了有效值,但是代码deleteRecord
没有被触发。从中,我尝试删除大括号,只写d['@link'].href
,但对我来说不起作用
当我将ng替换为onclick
时,deleteRecord
函数被触发
function deleteRecord(docURL) {
console.log(docURL);
$http.delete(docURL);
}
但是我收到了下面的错误
Uncaught ReferenceError: $http is not defined
deleteRecord
onclick
我正在使用jQuery 1.10.2和AngularJS v1.0.8。应该在当前和正确的范围内分配deleteRecord
方法
$scope.deleteRecord = function(){
....
应该是
$scope.deleteRecord = function (docURL) {
console.log(docURL);
$http.delete(docURL);
}
编辑:
更改html和控制器中的某些内容
这里的FetchViewData是一个控制器,在html中,您有ng controller=“FetchViewData”,您告诉它在该控制器的范围内查找任何角度方法和变量
这意味着,如果您想在单击时调用一个方法,它需要调用附加到控制器作用域的某些内容
function FetchViewData($scope, $http) {
var test_link = "<MY LINK>";
$http.get(test_link).success( function(data) {
$scope.viewData = data;
});
$scope.deleteRecord = function(docURL) {
console.log(docURL);
$http.delete(docURL);
}
}
函数FetchViewData($scope,$http){
var测试_link=“”;
$http.get(测试链接).success(函数(数据){
$scope.viewData=数据;
});
$scope.deleteRecord=函数(docURL){
console.log(docURL);
$http.delete(docURL);
}
}
这里,函数存在于作用域上,FetchViewData控制器中的任何html都可以访问该作用域,您应该能够调用方法
当您使用on-click时,它会工作,因为您的函数存在于全局名称空间中,而on-click将在全局名称空间中查找。Angular非常依赖作用域来保持名称空间的干净,这里有很多信息:如前所述,函数应在作用域内创建:
$scope.deleteRecord = function (docURL) {
console.log(docURL);
$http.delete(docURL);
}
要使用该函数,首先删除“{}”,因为您是从ng repeat内部使用它的。另一个问题是在你的代码中使用撇号,你有两对,一对在另一对里面。。。我相信你会有问题的
使用如下函数:
ng-click="deleteRecord(d['@link'].href)"
祝你好运 而不是这个
ng-click="deleteRecord('{{d['@link'].href}}')"
试试这个
ng-click="deleteRecord(d['@link'].href)"
您不需要在ng单击中使用花括号({{}})
享受…如果您想用作提交按钮,请将类型设置为“提交”,如下所示:
<button type="submit" ...
为什么ng click
不会触发的另一种可能性是,您正在应用CSS样式的指针事件:无代码>到元素。我发现Bootstrap的表单控制反馈
类应用了这种风格。因此,即使它将z-index
提高2,以便元素在前面单击,它也会禁用鼠标单击
因此,请注意您的框架是如何交互的。我尝试使用代码ng click=“FetchViewData.deleteRecord({d['@link'].href}}”)”
和ng click=“deleteRecord({d['@link'].href}')”
,但在这两种情况下都不起作用。在您的语法中的某个地方会出现问题,如您所见,这是一个非常基本的方法——尝试用一个没有参数绑定的方法替换你的方法(这可能是抛出错误的原因),看看它是否在调用它,所以只需单击ng click=“deleteRecord()”。谢谢!它最终使用ng click=“deleteRecord(d['@link'].href)”
工作。再次感谢GitHub链接和JSFiddle。没问题!很高兴我能帮忙!解释得很好,帮了我很多忙!我如何从ng click
?我尝试了ng click=“deleteRecord({{d['@link'].href}')”
,但它不起作用。看起来你想说些什么-这个答案不完整。不知道我当时在想什么。ng click=“deleteRecord(d['@link'].href)”是正确的答案我认为这也适用于其他引导类。
ng-click="deleteRecord(d['@link'].href)"
<button type="submit" ...