1
誰かが$ httpリクエストが無限のリクエストをサーバーに送信している理由を説明できますか?
.
.
.
this.setCookie = function(){
username = "Some random guy"
alert(45)
}
.
.
.
HTML:私のアプリケーションで 、このコードは次のように、私は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
})
}
は、しかし、唯一の単一の要求がサーバに渡され、サーバーに無限のリクエストを送信します私はこのような他の質問を読んでいる
<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>
: Infinite loop when trying to make Angularjs display a promise 彼らはおよそ答えていますAngularJSが双方向のデータバインディングを可能にする方法ですが、この場合、$ httpコードが削除されると、要求は1回送信されます。それ以外の場合は無限回送信されます。
'ProductsController'がインスタンス化されたときにOPがこれを実行したい場合これをコントローラー定義の本文に入れてください。 – nicooga
はい、これははるかに良い場所です。コントローラーがインスタンス化されたときにのみ実行されます – Austin
この関数呼び出しをビューから削除して、コントローラーで設定された値にバインドする必要があります。
–
Austin