0

私は Ember を初めて使用するので、いくつか問題や質問があります。

この関数を使用して、単一のテーブル行から情報を取得します

click: function(e) {
   var element = $(e.target).closest("td");  
   App.person = element.text().trim();
   var router;
   router = this.get('controller.target.router');
   router.transitionTo('newRoute');
   }

Person変数をテキスト フィールドにバインドしました。

{{view Ember.TextField valueBinding="App.Person"}}

newRouteテーブル要素をクリックすると、テキスト フィールドに遷移し、選択したエントリが入力されます。しかし、テーブルをもう一度クリックしても何も起こりません。

私が欲しいのは、テキストフィールドの内容を動的に変更することです。

誰かが私を助けてくれることを願っています。

4

1 に答える 1

1

テキストフィールドのコンテンツを動的に変更したい場合は、ルーターの移行は必要ありません。また、 のようなグローバル変数を使用する代わりに、フィールドをデフォルトのコンテキスト (コントローラー) にバインドすると、作業がはるかに簡単になりますApp.person

{{view Ember.TextField valueBinding="person"}}

その後、クリック fx で値を変更できます。

click: function(e) {
  text = this.get('controller.person');
  this.set('controller.person', text.trim();
}

その他の注意事項:

  • などのグローバル参照はApp.person可能な限り避けてください。フレームワークは、ローカル変数を介して必要なものすべてにアクセスできるようにする必要があります。クリック fx からコントローラーにアクセスする方法は、残り火の方法の例です。グローバル参照なしで何かを行う方法がわからない場合は、ここ StackOverflow で助けを求めてください。
  • 次のようなDOM要素を介してモデルデータにアクセスしないようにしてください$(e.target).closest("td");
  • ビュー コードから遷移を開始する必要がある場合は、ルーターにアクセスする必要はありません。最新のemberを使用していると仮定すると、呼び出すことができますthis.get('controller').transitionTo('newRoute')
于 2013-01-08T14:14:06.980 に答える