2012-01-10 14 views
7

以前はSproutCore 1で作業した後、ember.jsを調べています。ユーザーがアプリケーションをナビゲートするときに、DOMからビューを追加したり削除したりする方法の例を探しています。Ember.js DOMからビューを追加したり削除したりしますか?

たとえば、一連のケースを含むアプリケーションがあり、それぞれのケースにワークフローがあります。管理ページなどもあります。

ユーザーがアプリケーションを起動すると、ダッシュボードのようなユーザーインターフェイスが表示されます。ここから、ユーザーはケースを検索またはクリックしてそのケースを呼び出すことができます。私は次のことをやりたい。この時点で:

  • 私はダッシュボードのためのGUIを削除したい、と私はケースのためのGUIを表示したい - ナビゲーションの独自のセットでそれ自体が複雑なGUIでありますルールなど
  • また、ケース内で、ユーザーがケースをナビゲートして操作するときに、GUIの一部を追加して削除したいと考えています。
  • ユーザーが[ダッシュボード]リンクをクリックすると、現在のGUIを削除し、ダッシュボードを再度追加します。

これはやや大きなアプリケーションになりますが、isVisibleパラメータを切り替えることで十分かどうか、またはユーザーのブラウザを過負荷にしないように他の対策を講じなければならないかどうかはわかりません。

ガイドや、これを行う方法の例がありますか?

+0

[ember-states](https://github.com/emberjs/ember.js/tree/master/packages/ember-states)のコードを見てください。 –

+1

ud3323:ありがとう、私は持っていますが、それは2つの質問を残します:1.私はどのように追加し、childViewsを削除します2.私はどこでコードをMyApp.statemanager.create()と言うのですか? Ember.Application.create({ready:function({// here})});)内にそのコードを配置すると、index.htmlで作成されたビューの直前にステートチャートがロードされているようです。 –

+0

古いSC 1.xステートチャートと新しいエバーステートの大きな違いの1つはViewStatesです。基本的には、あなたのステートチャート内のビューの追加/削除を処理します。あなたの他の質問については、Ember.StateManager.createを呼び出すときにステートチャートを初期化し、初期状態を入力する必要があります。 –

答えて

9

警告:時代遅れの答えは

ビューは、それはいくつかの重要な方法を取得する意味Ember.Viewから継承されます。 append()は、bodyに、appendTo(arg)には引数をとり、remove()に追加します。

引数は、DOMに要素を挿入する場所のjQueryスタイルセレクタです。私のコードで

// my view 
App.PartsView = Ember.View.extend({ 
    ... 
}); 


// create/insert my view 
App.partsView = App.PartsView.create(); 
App.partsView.appendTo('#partcontainer'); 

私は<div id="partcontainer"></div>を持っています。

// remove from DOM 
App.partsView.remove(); 

ドキュメントはBuilding a View Hierarchyの良い部分と、あなたがプログラム的かどうかそれをすべてをやりたいかに応じてEmber.ContainerViewの後のセクションがあります。

+0

jQueryのドキュメントには、[利用可能なjQueryセレクタの概要](http://api.jquery.com/category/selectors/)があります。 – Abdull

+0

質問:これを行う必要がありますか? Emberとのやり取りの通常のやり方から少し外れているようです。 –

+1

良い質問です。私はほぼ2年前、emberjsがはるかに「未完成」だったときにこれを書いていましたが、今起こっていることを最新に保っていません。私の答えは時代遅れかもしれない。 –

関連する問題