2012-04-04 23 views
0

すべてのテストを2回、ドキュメントを3回読みましたが、Ember.Selectの使い方をよく理解できていません。Ember.Selectデフォルト値が正しく設定されていません

モデルオブジェクト(goal_type)に文字列値があり、これを選択肢に双方向でバインドし、その選択肢のデフォルトをgoal_typeフィールドの開始値にしたいとします。いくつかの質問:

  1. モデルの初期goal_typeを受け入れることができません。
  2. これはすべて複雑すぎるようです。元のコントローラの状態を変更するためにオブザーバを設定するより簡単な方法が必要です。

ヘルプ - 私はこれを理解しようと夢中になります。

 
Azul.goalController = Ember.Object.create({ 

    loadGoal: function(data) { 
     this.set('content', Azul.store.loadAll(Azul.Goal, data)); 
    }, 

    newGoal: function() { 
     goal = Azul.store.createRecord(Azul.Goal, {goal_type: "type2"}); 
     this.set('content', goal); 
     Azul.selectedGoalTypeController.selectGoalType(goal.get('goal_type')); 
    } 

    }); 

    Azul.selectedGoalTypeController = Ember.Object.create({ 
     selectedGoalType: null, 

     selectedGoalTypeChanged: function() { 
     Azul.goalController.content.set('goal_type', this.selectedGoalType.value); 
     }.observes('selectedGoalType'), 

     selectGoalType: function(goal_type) { 
     Azul.goalTypesController.content.forEach(function(item, index, self) { 
      if (goal_type == item.value) { 
       self.set('selectedGoalType', item); 
      } 
     }); 
     } 
    }); 

    Azul.goalTypesController = Ember.ArrayController.create({ 
     content: [ 
      {value: 'type1', label: 'Type 1'}, 
      {value: 'type2', label: 'Type 2'} 
     ] 
    }); 

答えて

1

値を設定するのではなく、選択オプションにバインドされたオブジェクトに値を設定する必要があります。ここで :

Azul.selectedGoalTypeController.selectGoalType(goal.get('goal_type')); 

ちょうど行います。ところで

Azul.selectedGoalTypeController.set('selectedGoalType', goal); 

は、あなたの質問は少し混乱が見えました。私はあなたを誤解した場合は申し訳ありません。 私はシンプルなサンプルの使用方法の選択をしました: http://jsfiddle.net/Qpkz5/300/

+0

サンプルを理解していますが、モデルのフィールドを値にバインドするための推奨方法は何ですか?選択し、モデルのフィールドの値を選択のデフォルトに設定します。私はまだそれを行うための方法を理解しているとは思っていません。 – outside2344

+0

私はフィドルを更新し、それがもう少し役立つかどうかを確認します... – Luan

関連する問題