2012-05-17 42 views
6

Tôi muốn Chế độ xem bị ẩn khi tải, khi người dùng nhấp vào liên kết, nó sẽ hiển thị chế độ xem. Ai đó có thể xem lại mã của tôi và cho tôi biết những gì tôi đã làm sai?Cách hiển thị/ẩn Chế độ xem trong EmberJS

App.parentView = Em.View.extend({ 
    click: function() { 
    App.childView.set('isVisible', true); 
    } 
}); 

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

Đây là jsfiddle: http://jsfiddle.net/stevenng/uxyrw/5/

+2

Could bạn tạo ra một fiddle với mã thực tế của bạn? Khối bạn dán có vẻ không đầy đủ. –

+0

Nếu không thấy các mẫu, tức là cách các Chế độ xem được đặt trên trang, điều này là không thể gỡ lỗi. Đề xuất của tôi sẽ thêm một số câu lệnh 'Em.Logger.log' trong hàm' click' (để đảm bảo nó thực sự được gọi) và thực sự đặt một thứ gì đó trong khung nhìn để chúng không chỉ là các div trống. Hãy thử chỉnh sửa jsFiddle này: http://jsfiddle.net/pjmorse/uxyrw/4/ – pjmorse

Trả lời

10

tôi sẽ tạo ra một đơn giản isVisibleBinding để xem bạn muốn ẩn/hiển thị, xem http://jsfiddle.net/pangratz666/dTV6q/:

tay lái:

<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>​ 

JavaScript:

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

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

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

Một lưu ý về quy ước đặt tên của bạn: lớp học nên được đặt tên UpperCase và trường lowerCase. Xem blog post về việc này.

+0

Cảm ơn sự giúp đỡ của bạn Pangratz, một câu hỏi nhanh khác. Nếu childView nằm trong {{each}} và nó đã tạo nhiều ChildView hơn, làm cách nào tôi nhắm mục tiêu chuyển đổi chương trình/ẩn sang nút được chọn cụ thể? – Steve

+2

Tôi sẽ tạo một 'CollectionView' mà 'itemViewClass' xử lý việc chuyển đổi hiển thị. Xem http://jsfiddle.net/pangratz666/ZTdPF/. – pangratz

-1

Valuebinding đối với một số lý do công việc didnt cho tôi để quan sát tài sản parentView bên childView đã làm các trick cho tôi

tay lái:

<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' 
Các vấn đề liên quan