2016-06-13 6 views
0

を選択し、1を選択します。しかし、1つのボックスを選択すると、1つのユーザーに対して、すべてのボックスがすべてのユーザーに対して選択されます。たとえば、Sophieのチーム(Speedy)を選択すると、すべてのチェックボックスがチェックされ、Speedyチームになります。どのように私はこれをやめますか?それぞれの人が異なるチームに参加できるようにします。燃えさしチェックボックス - すべてではないが、私はセットアップ]チェックボックスを持っており、選択されたとき、彼らは仕事エンバーバージョン2.5.1</p> <p>を使用していますすべての

(チームスピーディがチェックされている場合)、すべてのチームネームの隣には「チームスピード」が表示されます。

teams.hbs;

  <div class="container"> 
       <table class="table"> 
        <thead class="thead-inverse"> 
        <tr> 
         <th>Name</th> 
         <th>Team Speedy</th> 
         <th>Team Alpha</th> 
         <th>Team Invincible</th> 
        </tr> 
        </thead> 
        <tbody> 
        {{#each model as |signed-player|}} 
         <tr> 
          <td> {{signed-player.name}} </td> 
          <td> {{input type='checkbox' checked=speedy}} </td> 
          <td> {{input type='checkbox' checked=alpha}} </td> 
          <td> {{input type='checkbox' checked=invincible}} </td> 
         </tr> 
        {{/each}} 
        </tbody> 
       </table> 


      {{#each model as |signed-player|}} 
       <p><b>{{signed-player.name}}</b> is on the following team: <b>{{teamName}}</b></p> 
      {{/each}} 

      </div> 

コントローラ/ team.js

speedy: false, 
    alpha: false, 
    invincible: false, 


    teamName: function() 
    { 
    if (this.get('speedy')) { 
     return 'Team Speedy'; 
    } 
    else if (this.get('alpha')) { 
     return 'Team Alpha'; 
    } 
    else if (this.get('invincible')) { 
     return 'Team Invincible'; 
    } 
    else { 
     return 'No team yet'; 
    }; 
    }.property('speedy', 'alpha', 'invincible'), 
+0

あなたの問題はコントローラがシングルトンであると思います。つまり、あなたが改造したときに、ユーザーが変更してもチェックボックスはチェックされたままです。したがって、setupController(コントローラ、モデル)のルートの内側で、controller.set( 'speedy'、null)を使用してリセットしようとします。 –

答えて

1

私はあなたの例でわかる主な問題は、あなたがプレイヤーの任意の上の任意のプロパティを設定していないです。あなたは1つのプロパティー{{teamName}}しか計算しておらず、プレイヤーごとに1回しか表示していないので、1つのチェックボックスをクリックすると、誰のチームも変更するように見えます。

私が見ている他の問題:選択したチャックボックスが適切なUIであるかどうかを判断する必要があります。 1人のプレーヤーが複数のチームに参加することはできますか?そうであれば、チェックボックスは正常です。そうでなければ、選択ボックスまたはラジオ入力のセットがおそらく良いでしょう。

すべてのことが言われています...各選手オブジェクト/レコードには、所属するチームを表す値を実際に格納するプロパティが必要です。

ます。また、各チェックボックス/ラジオ/選択/何でも、実際に選手オブジェクトに選択した値を設定することからアクションが必要になります。

ここでは、私の例である: https://ember-twiddle.com/1fe44ad4dc0494973c494a624ead79b7?fileTreeShown=false&openFiles=templates.application.hbs%2C

の数があります私たちがやっていることは基本的に選択した入力(私のためにラジオ)を使用し、入力からの変更アクションを使ってそれぞれのプレーヤーのteamプロパティを設定することです。これはそれぞれに定義されていますプレイヤーオブジェクトで始まります。

例のアクションでmutヘルパーを使用しています。テンプレートアクションで値を設定する簡単な方法です。代わりにチェックボックスを使用したい場合は、 mutヘルパーを使用して、コントローラに独自のカスタムアクションを適用します。

余分な解説が必要な場合はフォローアップしてください。

+0

ありがとうございました!華麗な説明と例の両方のために!また、選択やラジオボタンの効果についても説明します。私はあなたにボーナスポイントを与えることができればいいと思っています:-)将来誰かがあなたと同様にこれを助けてくれることを願っています:-) – Pepper

関連する問題