2015-02-25 18 views
5

tôi muốn thử sử dụng:Làm thế nào để thiết lập itemController trong mỗi như (ember 1.11 beta3)?

{{#each content as |product index|}} 
    {{index}} 
{{/each}} 

Nhưng ứng dụng của tôi có itemContoller, như thế này:

{{#each product in content itemController='product'}} 

Nếu tôi đặt này:

{{#each content as |product index| itemController='product'}} 

Nó không làm việc! Tôi tìm thấy tất cả các hướng dẫn ember và không tìm thấy câu trả lời.

Bất kỳ trợ giúp nào vui lòng.

Trả lời

7

Bộ điều khiển (Object, ArrayitemController) sẽ biến mất. Cách mới để làm việc là sử dụng một thành phần.

Vì vậy, thay vì điều khiển mục của bạn, bạn sẽ xác định một thành phần:

App.MyProductComponent = Ember.Component.extend({ 
    myIndex: function(){ 
    return this.get('passedIndex') + 1; 
    }.property('passedIndex') 
}); 

Sau đó, bên trong #each helper của bạn, bạn sẽ sử dụng nó như sau:

<script type="text/x-handlebars" data-template-name="index"> 
    <ul> 
    {{#each model as |product index|}} 
     {{ my-product passedIndex=index product=product }} 
    {{/each}} 
    </ul> 
</script> 

giải pháp làm việc here

Xem liên kết sau và thực hiện tìm kiếm itemController - https://github.com/emberjs/rfcs/pull/15

+0

Tuyệt. Cảm ơn rất nhiều – JeskTop

+1

Đừng quên đặt 'tagName: 'li'' trong thành phần. Nếu không, một div sẽ được sử dụng, có thể làm hỏng danh sách của bạn. –

0

Thật sao? Ý tôi là, có rất nhiều trường hợp tôi nghĩ rằng việc tạo một thành phần để hiển thị các giá trị tính toán dựa trên (các) thuộc tính của mô hình của bộ điều khiển sẽ là quá mức ..... Nếu tôi chỉ muốn một chuỗi (tôi không cần điều <div> được thêm bởi ember cho mỗi thành phần).

Tạo trình trợ giúp? Wow.

0

@ user3443096,

Nếu bạn không muốn có thẻ div chèn bằng cách sử dụng ember tagName: "" bất động sản như thế này:

App.InvoiceItemsComponent = Ember.Component.extend({ 
tagName: '' 
}); 

Bây giờ, divs xung quanh thành phần của bạn sẽ không được chèn vào.

Các vấn đề liên quan