1

残り火に関して次の問題があります。

データのセットを含むテーブルがあります。テーブルの現在の要素を返すイベントがあります。次に、新しい状態に遷移して別のビューを開き、選択したテーブルデータをテキストフィールドに書き込みます。

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

ご覧のとおり、ルーターには他にもいくつかのルートがあります。最後の2つのルート(ホームとプロファイル)はnav-tabの一部です。私がテーブルをクリックすると、それらは完全に機能します。次に、タブをクリックすると次のエラーが発生します。Uncaught TypeError:Undefinedのプロパティ'enterStates'を読み取れません

わかりました。やりたいことをもう一度説明してみます。

私がやりたいのは、いくつかのデータ(たとえば人)を含むテーブルを作成することです。テーブル内の特定の人をクリックすると、対応するテーブルデータが下に表示されるテキストフィールドに表示されます。他の人をクリックするたびに、下のテキストフィールドがテーブル内で現在クリックされている人の情報に変わるはずです。「新規」ボタンをクリックすると、右側にいくつかの追加情報を含むより詳細なタブビューが表示されます。私は残り火で遊んでいましたが、これまでのところ、いくつかのビューとルーティングを実装しました。テーブルの下のテキストフィールドを更新するイベントを実装しようとしたため、スタックしました。一度更新されますが、新しい状態(newRoute)に移行した後は、何も起こりません。コードが非常に未加工であることは知っていますが、これは残り火でどのように機能するかを理解するためのテストにすぎません。

4

2 に答える 2

1

解決策は思ったより簡単でした。問題は状態の変化ではありませんでした。それよりも、データにアクセスする方法と、バインドされたデータを変更する方法の問題でした。Ember で変数アクセスがどのように機能するか、および App.initialize() メソッドが正確に何をするかを理解する必要があることに気がつきました。したがって、 App.initialize() はルーター内のすべての Controller クラスを初期化します。コントローラー内の変数にアクセスしたい場合は、次のようにルーター経由でアクセスする必要があります

{{view Ember.TextField valueBinding="App.router.tableController.person"}} 

第二に、Ember での set メソッドと get メソッドの使用法と、extend と create の違いに慣れていませんでした。ember がどこでオブジェクトをインスタンス化するのか、以前は疑問に思っていました。したがって、私の問題は、ember フレームワークの完全な誤解であるという状態とは何の関係もありませんでした。私は初心者です。

于 2013-01-17T14:24:17.393 に答える
0

わかりました、これが答えの最初のショットです。

  • 主な問題は、テンプレートではgotoHomeなく単なるタイプミスだと思います。goToHome
  • ちなみに、<button {{action }}></button>Ember.Button の代わりに使用することで、非推奨の警告をいくつか取り除きます。
  • テーブルをクリックすると、存在しないいくつかのプロパティを参照しているため、他の警告が表示されます。

対応するフィドルは次のとおりです。http://jsfiddle.net/Sly7/rKw9A/25/

正確にどのように動作するかを理解していないため、全体的な動作がわかりません。流れを説明させてください(質問を編集してください)。他のコメントは大歓迎です:)

于 2013-01-15T22:12:48.527 に答える