2017-02-14 8 views
0

私はAngular-DrywallとngCartを使用しています。このAngularとJSのことはあまり専門家ではない:D。私はNGリピートを確認しているng-repeatはコントローラー内で無限ループを引き起こします。ブレークポイントの設定show controller code無限実行

これは、テンプレート(main.tpl.html)

<div class="col-xs-3" ng-repeat="item in products"> 
      <div class="thumbnail"> 
       <img ng-src="{{ item.imageUrl }}"> 
       <h4>{{ item.name }}</h4> 
       <p>{{ item.snippet }}</p> 
       <h3 class="price">{{ item.name.length*10-.01 | currency}}</h3> 
       <ngcart-addtocart id="{{ item.id }}" 
          name="{{ item.name }}" 
          price="{{ item.name.length*10-.01 }}" 
          data="item" 
          quantity="1" 
          quantity-max="30"> 
        Add To Cart 
       </ngcart-addtocart></div> 
</div> 

からの私のhtmlであり、これは私のコントローラ

angular.module('app').controller('AppCtrl', ['$http', '$scope', 'i18nNotifications', 'localizedMessages', 'ngCart', 
    function ($http, $scope, i18nNotifications, localizedMessages, ngCart) { 

     ngCart.setShipping(15.00); 
     ngCart.setTaxRate(13); 

     $http({method: 'GET', url: 'data/phones.json'}) 
       .success(function (data, status, headers, config) { 
        $scope.products = data; 
        console.log(data); 
        console.log("LOOP!"); 
       }) 
       .error(function (data, status, headers, config) { 
        // called asynchronously if an error occurs 
        // or server returns response with an error status. 
        console.log("ERROR!"); 
       }); 

     $scope.notifications = i18nNotifications; 

     $scope.removeNotification = function (notification) { 
      i18nNotifications.remove(notification); 
     }; 

     $scope.$on('$routeChangeError', function (event, current, previous, rejection) { 
      i18nNotifications.pushForCurrentRoute('errors.route.changeError', 'error', {}, {rejection: rejection}); 
     }); 
    }]); 

でそのコードを削除するため、根本的な原因でありますすべてがピーチであり、無限ループでないことを意味します。

また、製品が有効な配列であることを確認しました。

htmlコードでは、コントローラがリロードして実行し続け、Chromeが最終的に私にそれを強制終了するまでリソースを消費します。

助けをお待ちしています。数時間も経たないうちにこれをトラブルシューティングしました!

EDIT:私の非作業コードの使用は、この(routeProviderを使用)しながら、

ngCartサンプルを作業の間で異なるが、

<div class="container"> 
    <div ui-view></div> 

    <!-- /.container --> 
</div> 

(stateProviderとui.routerライブラリを使用して)され

<div class="page"> 
    <div ng-view class="container"></div> 
</div> 

テンプレートが挿入されている場所を示すindex.htmlのコード。作業中のユーザーはui-viewを使用していますが、非稼働のユーザーはng-viewを使用しています。

これが理由であれば、誰かが理由を説明できるのであれば、それを感謝してください。

+2

この背後にある意図は何ですか? '{{item.name.length * 1 0-.01 |通貨}} '? –

+0

あなたのng-repeatがうまくいかない理由がわかりません。私が知っているのは、ngcart-addtocart(私が知らない)と何か関係があるということです。 ngcart-addtocartを削除してng-repeatが動作するかどうかを確認するために試してみましたか(この方法で、問題の原因がわかります)。 – Tonio

+0

@MatthewCawleyコードはngCartサンプルからのものです。そしてそれを指摘してくれてありがとう。私はちょうどサンプルが価格を計算するために製品名の長さを使用し、-0.01は価格が信じられないように見えるようにするためにあることを認識しています。 –

答えて

1

あなたの問題に関連する過去の問題: 「templateUrl」を介してテンプレートにアクセスする任意のディレクティブをインクルードすると、何らかの理由でangleがこのディレクティブのtemplateUrlをデフォルトで解決できないそれはこれがある

....もう一度あなたのディレクティブが含まれているとディレクティブのtemplateUrlが見つからないので、それは

などをindex.htmlにするために、再びデフォルトになりますindex.htmlをするためのテンプレートを返します。おそらくあなたの問題です

+0

私は今これを答えとして受け入れるつもりです。しかし、私は根本的な原因をまだ特定せず、これを解決していません。後でこれをトラブルシューティングして戻ってきます! –

関連する問題