2016-04-10 12 views
0

私はAngularJSのコースを終えましたが、まだまだ初心者です。これは最初からアプリを書く私の最初の試みです。私は、多くの食料雑貨店で行われている最近の独占ゲームからゲームの部分を追跡するためのアプリを構築しようとしています。これまで私は各文字をループすることができました。そのループの中には、その文字に割り当てられたすべてのゲームピースを示すループがあります。各手紙には、その手紙に割り当てられたすべてのゲームピースを含むそれ自身のテーブルがあります。ここからは、ユーザーに+または - それぞれのゲームピースの横に値を付けて、そのピースの数を追跡できるようにしたいと考えています。これは可能ですか?私はすでにループの中にループを入れました。そして、対応する部分の横の各ピースの数をどのようにループするかについてはあまりよく分かりません。私はこれがゲームの数を維持するための正しい構文ではないことを知っていますが、私はたくさんのグーグルとリサーチを行っており、私がしようとしていることを助ける記事やチュートリアルは見つかりませんでした。ここでAngularJSはループしたアイテムに値を割り当てます

は私のコントローラからの私のjsコードです:

'use strict'; 

angular.module('monopolyApp') 
    .controller('MainCtrl', function ($scope) { 
    $scope.pieces = [ 
     { 
     letter: 'A', 
     prize: '$100,000 Cash or Luxury Car', 
     numbers: ['A500A','A501B','A502C','A503D','A504E'], 
     count: [0,0,0,0,0] 
     }, 
     { 
     letter: 'B', 
     prize: '$50,000 Home Makeover', 
     numbers: ['B505A','B506B','B507C','B508D','B509E'], 
     count: [0,0,0,0,0] 
     } 
    ]; 
    }); 

、ここでは、私の見解からhtmlですが、それはヒスイで書かれています。

.container 
    .col-xs-4(ng-repeat='piece in pieces') 
    table 
     tr 
     th Piece: {{ piece.letter }} | Prize: {{ piece.prize }} 
     tr(ng-repeat='number in piece.numbers') 
     td {{ number }} 
     td {{ count }} 

は、これまでのところ私はそれは私がやりたいことはできませんちょうど包みAとBからのゲームの部分を追加して、私は不必要な時間を無駄にしたくありませんでした。ユーザーがそれぞれのピースの数を把握できるように、各ピースの横に調整可能な値を含める方法はありますか?

ありがとうございました。

+1

私はあなたが何をしたい絶対に説得力のあることをかなり確信しています。しかし、私はそれがあなたが望むものが何であるかを理解するのが難しいと感じます。 –

+0

申し訳ありませんが、私はここで尋ねる前に、私はグーグルでこれを一夜にする方法を研究してきました。私はまだ非常に初心者のコーダーであり、私はまだ私がしようとしていることを他の人が理解できるように質問する適切な方法を学ぼうとしています。 テーブルにAとBのピースをループして、それぞれの対応するゲームピースをそれらのテーブルにループして、ピースの隣の同じテーブルに値をループしようとしています。ユーザーが持っている各ゲームピースの数の+または - の値。これはまったく役に立ちますか?私はまだあなたに意味をなさない場合はお詫び申し上げます。 –

答えて

1

あなたは何を達成するか本当に分かりません。

ユーザーは、それが作品に番号の数を意味しています彼らは

を持っているどのように多くのそれぞれの作品のを追跡できるようにそれぞれの作品の横に調整可能な値を含める方法上の任意のアイデア?

次に、{{piece.numbers.length}}をテンプレートに使用できます。

または、個数を出力することを意味しますか?

この値の項目count: [0,0,0,0,0]?そして、あなたはテンプレートでこのようにそれを行うことができます。

tr(ng-repeat='number in piece.numbers') 
     td {{ number }} 
     td {{ piece.count[$index] }} 

$インデックスはcurrent item in ngRepeat loopの内部で利用できる値です。したがって、これを使用して配列piece.countの対応する値にアクセスできます。

+0

カウントの値は、数値配列の各ゲームピースに対応するものとします。数値配列の各項目の横にある数値配列の値をループすることを望んでいましたが、すでに別のループの内部でループを行っているので、これは難しいかもしれません。私は今すぐ寝るつもりですが、朝にこれを試してみましょう。ありがとう! –

+1

"個数の値は数字配列の各ゲームピースに対応するはずです - それはまさに私がやろうとしたことです。 Btw、ループ内のループは悪いことではありません。データ構造に2つ以上の層がある場合は大丈夫です。 – shershen

+0

はい、私はそれを理解しています。私は午前中にこれを試し、それがどのように進むのかを知らせます。今のところ私は少し疲れていて、もう少し先に行く前に休みを取るべきだと思う。提案してくれてありがとう、明日起きるときにまずそれを試してみるよ! –

1

私が正しく理解していれば、データをモデル化する別の方法を検討することができます。このような何か:

$scope.pieces = [ 
    { 
     letter: 'A', 
     prize: '$100,000 Cash or Luxury Car', 
     numbers: [{ 
      name: 'A500A', 
      count: 0 
     },{ 
      name: 'A501B', 
      count: 0 
     /* etc */ 
     }] 
    } 
]; 

が続いHTMLは次のようになります。

.container 
    .col-xs-4(ng-repeat='piece in pieces') 
    table 
     tr 
     th Piece: {{ piece.letter }} | Prize: {{ piece.prize }} 
     tr(ng-repeat='number in piece.numbers') 
     td {{ number.name }} 
     td {{ number.count }} 
     td 
      a(ng-click='number.count += 1') Add count 
      a(ng-click='number.count -= 1') Subtract count 
+0

私はこれをおそらくこの方法でやったかもしれないと理解していますが、もっとコードをたくさん必要とするでしょう。もっと簡単なコードでこれを行う簡単な方法を探していたと思います。可能であれば、最も簡単で怠惰な方法が最善の方法であると教えられました。私はこれを試すことができると思いますが、ゲームの中で配列の各文字に対応する部分を格納することを望んでいましたボードには文字AZがあります。また、特殊文字を含むさらに多くの部分があり、各文字に対応する5-8個のゲームピースがあります。私は簡単な道を見つけることができない場合は、もちろんこのルートを行くでしょう。ありがとう! –

関連する問題