Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ng单击不在AngularJS中激发,而onclick则会_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript ng单击不在AngularJS中激发,而onclick则会

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

我正在尝试在我的应用程序中使用AngularJS,并在一定程度上取得了成功

我能够获取数据并将其显示给用户。我在
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" ...