Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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 AngularJS$http无限调用_Javascript_Angularjs_Node.js_Http_Mean Stack - Fatal编程技术网

Javascript AngularJS$http无限调用

Javascript AngularJS$http无限调用,javascript,angularjs,node.js,http,mean-stack,Javascript,Angularjs,Node.js,Http,Mean Stack,有人能解释一下为什么$http请求会向服务器发送无限多的请求吗? 在我的应用程序中,此代码向服务器发送无限请求 (function(){ var app = angular.module("GrahamsSocksProducts", ["ngCookies"]); app.controller("ProductsController", ["$controller", "$http", "$cookies", function($controller, $http, $cook

有人能解释一下为什么$http请求会向服务器发送无限多的请求吗? 在我的应用程序中,此代码向服务器发送无限请求

(function(){
    var app = angular.module("GrahamsSocksProducts", ["ngCookies"]);
    app.controller("ProductsController", ["$controller", "$http", "$cookies", function($controller, $http, $cookies){
.
.
.
this.setCookie = function(){
        username = "Some random guy"
        alert(45)

        $http({
            method : "GET",
            url : "http://_____________",
            params : { username : username }
        }).then(function(){
            //do something
        })
    }
但是,当我删除http请求时,只有一个请求被传递到服务器,如下所示:

.
.    
.
this.setCookie = function(){
        username = "Some random guy"
        alert(45)
}
.
.
.
HTML:

<div ng-app="GrahamsSocksProducts">
        <div ng-controller="ProductsController as products">
        {{ products.setCookie() }}
            <div class="row">
                <div ng-repeat="product in products.products">
                    <div class="col-sm-4 col-lg-4 col-md-4">
                        <div class="thumbnail">
                            <img ng-src="{{products.getImageTag(product)}}">
                            <div class="caption">
                                <h4 class="pull-right">${{ product.price }}</h4>
                                <h4>
                                    <a href="#"> {{ product.name }}</a>
                                </h4>
                                <p>{{ product.description }}</a>.</p>
                                </div>
                    </div>
                    <div class="ratings">
                        <p class="pull-right">{{ product.ratings }} / 5</p>
                        <p>
                                <span ng-class="products.getStarColor(product.ratings, 1)" ng-click="product.ratings=1"></span>
                                <span ng-class="products.getStarColor(product.ratings, 2)" ng-click="product.ratings=2"></span>
                                <span ng-class="products.getStarColor(product.ratings, 3)" ng-click="product.ratings=3"></span>
                                <span ng-class="products.getStarColor(product.ratings, 4)" ng-click="product.ratings=4"></span>
                                <span ng-class="products.getStarColor(product.ratings, 5)" ng-click="product.ratings=5"></span>
                        </p>
                    </div>
                    <div>
                        <button class="btn btn-primary" ng-click="products.addToCart(product)">Add to Cart</button>
                        <button class="btn btn-default">Checkout</button>
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col-md-12">
                    <div class="container">                 
                        <div class="jumbotron">
                            <ul class="list-group"ng-repeat="cartProduct in products.getCartNameAndQuantity()">
                                <li class="list-group-item">{{ cartProduct.name }}  ({{ cartProduct.quantity }})</li>
                            </ul>
                            Cart products price : {{ products.getCartPrice() }}
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

{{products.setCookie()}
${{product.price}
{{product.description}}

{{product.ratings}/5

添加到购物车 结账
  • {{cartProduct.name}({{cartProduct.quantity}})
购物车产品价格:{products.getCartPrice()}
我读过其他问题,例如:
他们回答了AngularJS如何允许双向数据绑定,但在本例中,当删除$http代码时,请求将发送一次,否则将发送无限次。

每次运行摘要循环时都会运行表达式{products.setCookie()},这是一个非常复杂的过程。每次页面更改时,单击、事件等。我不确定为什么在视图本身上有这个表达式,但您需要将它放在其他位置

每次运行摘要循环时都会运行表达式{{products.setCookie()}},这是非常多的。每次页面更改时,单击、事件等。我不确定为什么视图本身会有此表达式,但您需要将其放在其他位置

如果OP希望在
ProductsController
实例化时运行此表达式,则应将其放在控制器定义的主体中。是的,这是一个更好的位置。它只会在控制器实例化时运行。您还应该从视图中删除此函数调用,并绑定到控制器中设置的值:以前不知道摘要循环;我应该提到“AngularJS中的新手”。感谢有什么更好的方法来了解它,而不是让它让你的应用程序爆炸:)如果OP想在
ProductsController
实例化时运行它,应该将其放在控制器定义的主体中。是的,这是一个更好的地方。它只会在控制器实例化时运行。您还应该从视图中删除此函数调用,并绑定到控制器中设置的值:以前不知道摘要循环;我应该提到“AngularJS中的新手”。感谢有什么更好的方法来了解它,而不是让它让你的应用程序爆炸:)