2016-09-11 7 views
0

Emberを使用して、<select>ストアからデータを集めたフォームを作成しようとしています。私はここから値を回復して「保存」機能で使用する方法を知らない。Ember:動的な「選択」タグからデータを回復

私は間違っていますか?

  1. routeは貴様モデルへのアクセス:

    は、ここで私が持っているものの簡易版です。これは正常に動作します:

    import Ember from 'ember'; 
    export default Ember.Route.extend({ 
    
        model() { 
         var store = this.store; 
    
         return Ember.RSVP.hash({ 
          fighters: store.findAll('fighter'), 
          duels:store.findAll('duel') 
         }); 
        }, 
    
        setupController(controller, models) { 
    
         var fighters = models.fighters; 
         var duels = models.duels; 
    
         controller.set('fighters', fighters); 
         controller.set('duels', duels); 
        } 
    }); 
    
  2. コントローラーは、フォームの値を使用して新しい決闘を保存する必要があります。フォームは、テンプレートが表示されOK droplists

    import Ember from 'ember'; 
    export default Ember.Controller.extend({ 
    
        actions: { 
         save(formdata) { 
          var newduel = this.store.createRecord('duel', { 
            fighter1:formdata.fighter1, 
            fighter2:formdata.fighter2, 
          });    
         } 
        } 
    }); 
    
  3. を提出されたときにここで「FORMDATAは」ヌルですが、私は私がしようと何でも##FIGHTERn##コントローラの値に「接続」することはできません!

    <form {{action "save" formdata on "submit"}}> 
    <dl> 
        <dt> 
         <select value='##FIGHTER1##'> 
          {{#each fighters as |fighter|}} 
           <option value={{fighter.id}}>{{fighter.name}}</option> 
          {{/each}} 
        </select>    
        </dt> 
    
        <dt> 
         <select value=##FIGHTER2##> 
          {{#each fighters as |fighter|}} 
           <option value={{fighter.id}}>{{fighter.name}}</option> 
          {{/each}} 
         </select> 
        </dt> 
    </dl> 
    <button type="submit">Add</button> 
    

+0

あなたを助けることができますhttp://balinterdi.com/ 2015/08/29/how-to-do-a-select-drop-in-ember-20.html – kiwiupover

+0

@kiwiupoverによって与えられるリンクは、選択リストを操作して保存するためのデータを得る方法です。 –

答えて

3
<form {{action "save" formdata on "submit"}}> 
<dl> 
    <dt> 
     <select onchange={{action (mut fighter1) value="target.value"}}> 
      {{#each fighters as |fighter|}} 
       <option value={{fighter.id}} selected={{is-equal fighter1 fighter.id}}>{{fighter.name}}</option> 
      {{/each}} 
    </select>    
    </dt> 

    <dt> 
     <select onchange={{action (mut fighter2) value="target.value"}}> 
      {{#each fighters as |fighter|}} 
       <option value={{fighter.id}} selected={{is-equal fighter2 fighter.id}}>{{fighter.name}}</option> 
      {{/each}} 
     </select> 
    </dt> 
</dl> 
<button type="submit">Add</button> 

コントローラー:

import Ember from 'ember'; 
export default Ember.Controller.extend({ 

    actions: { 
     save() { 
      this.store.createRecord('duel', { 
       fighter1: scope.get("fighter1"), 
       fighter2: scope.("fighter2"), 
      }); 
     } 
    } 
}); 

これは、この偉大なブログ記事を見てください

関連する問題