2011-12-15 4 views
3

Emberの特殊なビューを実装するのに少し問題がありますが、私は数日間ソースを掘り下げていますが、動作させる方法を見つけることはできません。見て何が​​間違っているか教えてください。これは小さなコードで、別のビューから1つのビューをレンダリングするときの特定の問題です(バインド権を正しく実行していません...)。問題を示すEmberJSで動的にレンダリングを表示

(コメント付き)のサンプルコードはここにある:http://jsfiddle.net/wilkerlucio/rUUuN/

編集:

だけ明確にする、私は動的に別のビューをレンダリングするビューをやろうとしています。たとえば、タブのような多くの実装で役に立ちます。タブ上にはタブと現在のタブを表示するコンテナがありますので、私が達成しようとしているビューはこの現在のタブコンテナと似ています。各タブには独自のビューがあり、現在のタブのビューをレンダリングする必要があります。

私はちょうどビューを隠し、他のものを表示するようなことをすることができますが、私は今それを望む方法ではありません。私が作成しているこのCardViewは、ビューインスタンスを返すプロパティへのバインディングを持ち、CardViewはこのビューをレンダリングし、ビューの更新を示すプロパティが更新されると更新します。

あなたは私がここで何をしようとしている詳細については、完全な屋根付きの例を見ることができます:http://jsfiddle.net/wilkerlucio/Ztdpb/

おかげ

+0

達成しようとしていることについてもう少し知ることは有益でしょう。私は、あなたがやろうとしていることに対してより良いアプローチがあるかもしれないと思う。 –

+0

私が気づいた別のもの。レンダリングプロセスで新しいビューを追加するためにthis.appendChildを使用した場合、それは機能します。しかし、内部ビューを更新するとちょっと変わってしまいます。新しいビューを別々のステップとして削除して追加するようなものです。ウィンドウ上でフリックすることがわかります...私は、 。 –

答えて

6

私はあなたのようなテンプレートを指定する必要があると思う:

App.CardView = Ember.View.extend({ 
    defaultTemplate: SC.Handlebars.compile('{{App.obj.value}}') 
}); 

または

App.CardView = Ember.View.extend({ 
    templateName: 'sample' 
}); 

多くのχ ldビューを使用している場合は、コレクションビューを使用するとよいでしょう。

このリンクは少し古いですが、それはまだ悪いことではありません:http://guides.sproutcore20.com/using_handlebars.html

私もそれがエンバー(SC2)hereでCRUD操作を実装する方法についてブログしました。

これが役に立ちます。

+2

2番目の方が正しいです。ネストされたビューは必要ないので、作成するのは面倒ではありません。 templateNameを使用すると、ビューにテンプレートを添付できます。 –

+0

こんにちはVeebs、返信ありがとうございますが、これは私が探しているものではありません...実際には1つの "子供"が存在しますが、実行時に変更されます。これはレイアウトチェンジャーのようなもので、いつでも誰かが新しいビューでビューを更新するバインディングを変更することができます。現在のサブビューには独自のデータがあるため、サブビューのインスタンス化は重要です。私はルータとして動作する別のクラスを持っているので、ユーザコールは "ページ"を変更するルータであり、CardLayoutはこの場合は "ページ"であると考えられます(しかし一般的な目的は、あなたが欲しい)。 –

+0

私がしていることの完全な理解のためにhttp://jsfiddle.net/wilkerlucio/Ztdpb/を参照してください。ありがとう –

関連する問題