Angularjs的HTTP只工作一次

angularjs http works only once

本文关键字:一次 工作 HTTP Angularjs      更新时间:2023-09-26

我在论坛上看到了一些类似的帖子,但没有找到解决我问题的方法。也许是因为我不熟悉js/angular之类的东西。是这样的:

完美的图片:我点击按钮数据(一些文本/数字)从服务器更新和显示。

我的问题是——我只得到一次数据。后来调用了jquery.js中的其他函数,而不是我的。

        if ( !(eventHandle = elemData.handle) ) {
        eventHandle = elemData.handle = function( e ) {
            // Discard the second event of a jQuery.event.trigger() and
            // when an event is called after a page has unloaded
            return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ?
                jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
                undefined;
        };
我代码:

controllers.js:

    myApp.controller('ajaxController', function($scope, $http, $log){
        $scope.ajaxData={};
        $scope.ajaxData.doClick = function(item, event){
            $http({method: 'GET', url: 'temp/temp.json', params: { 'foobar': new Date().getTime() } }).
                success(function(data, status, headers, config) {
                    $log.debug(data);
                    $scope.ajaxData = data;
                }).
                error(function(data, status, headers, config) {
                    $log.debug("not good");
                });

index . html:

<div class="container" ng-controller="ajaxController"> (...)
<button ng-click="ajaxData.doClick(item, $event)">Send Request</button>
percentage: {{$scope.ajaxData.data.cpu}}</br>
usage: {{$scope.ajaxData.total}}</br>
idle: {{$scope.ajaxData.idle}}</br>

我可以看到在chrome控制台,第一个请求是完成的,它成功了,后来的代码上面提到的执行,而不是我得到没有数据。

在你的成功函数中,你用你的响应覆盖ajaxData

$scope.ajaxData = data

表示$scope.ajaxData.doClick不再存在。尝试将doClick绑定到$作用域。