2012-05-17 19 views
6

読み込み時に表示を非表示にしたい場合、ユーザーがリンクをクリックすると表示されます。誰かが私のコードを見直して、私が間違ったことを教えてもらえますか? http://jsfiddle.net/stevenng/uxyrw/5/EmberJSでビューを表示/非表示にする方法

+2

でしたあなたの実際のコードでフィドルを作成しますか?あなたが貼り付けたブロックは不完全なようです。 –

+0

テンプレートが表示されていない、つまりビューがページにどのように表示されているかは、これをデバッグすることは不可能です。私の提案は 'Em.Logger.log'ステートメントを' click'関数に追加して(実際に呼び出されるようにする)、実際にビューに何かを入れて、空のdivだけではないようにすることです。このjsFiddleを編集してみてください:http://jsfiddle.net/pjmorse/uxyrw/4/ – pjmorse

答えて

10
私は、あなたが/ショーを非表示にするビューに簡単な isVisibleBindingを作成する見ること

http://jsfiddle.net/pangratz666/dTV6q/

ハンドル

<script type="text/x-handlebars" > 
    {{#view App.ParentView}} 
     <h1>Parent</h1> 
     <div> 
      <a href="#" {{action "toggle"}}>hide/show</a> 
     </div>  
     {{#view App.ChildView isVisibleBinding="isChildVisible" }} 
      {{view Em.TextArea rows="2" cols="20"}} 
     {{/view}}   
    {{/view}} 
</script>​ 
ここ
App.parentView = Em.View.extend({ 
    click: function() { 
    App.childView.set('isVisible', true); 
    } 
}); 

App.childView = Em.View.extend({ 
    isVisible: false 
}); 

はjsfiddleです

JavaScript:あなたの命名規則について

App.ParentView = Em.View.extend({ 
    isChildVisible: true, 

    toggle: function(){ 
     this.toggleProperty('isChildVisible'); 
    } 
}); 

App.ChildView = Ember.View.extend(); 

注:クラスはUpperCaseとインスタンスlowerCaseを命名する必要があります。これについてはblog postを参照してください。そうchildView内parentViewプロパティを観察する私のためにいくつかの理由のdidntの仕事のためにValuebinding

+0

もう一度簡単な質問をしてくれてありがとうPangratz。 childViewが{{each}}にあって、より多くのchildViewを生成した場合、どのように表示/非表示のトグルを選択した特定のトグルにするのでしょうか? – Steve

+2

私は '' ItemViewClass'が可視性のトグルを扱う 'CollectionView'を作成します。 http://jsfiddle.net/pangratz666/ZTdPF/を参照してください。 – pangratz

-1

は私のためにトリックをした

ハンドルバー:

<script type="text/x-handlebars" > 
    {{#view App.ParentView}} 
     <h1>Parent</h1> 
     <div> 
      <a href="#" {{action "toggle"}}>hide/show</a> 
     </div>  
     {{#view App.ChildView }} 
      {{view Em.TextArea rows="2" cols="20"}} 
     {{/view}}   
    {{/view}} 
</script>​ 

のCoffeeScript:

App.ParentView = Em.View.extend 
    isChildVisible: true 
    toggle: -> 
    @toggleProperty 'isChildVisible' 
App.ChildView = Em.View.extend 
    isVisible: (-> 
    @get('parentView.isChildVisible') 
).property '_parentView.isChildVisible' 
関連する問題