2013-01-11 22 views
7

Tôi tự hỏi nếu registerBoundHelper trong ember đã từng có ý nghĩa để có thể xử lý những người giúp đỡ kiểu khối. Ví dụ, tôi tạo ra như sau:Trợ giúp chặn liên kết Ember

Ember.Handlebars.registerBoundHelper('unlessUndefined', (context, options) -> 
    unless typeof context == "undefined" 
    return options.fn(this) 
    else 
    return options.inverse(this) 
) 

Ý tưởng là để sử dụng nó như vậy:

{{#unlessUndefined choice}} 
    {{#if choice}} 
    <p>You chose yes</p> 
    {{else}} 
    <p>You chose no</p> 
    {{/if}} 
{{else}} 
    <p>Make a choice</p> 
{{/unlessUndefined}} 

Các option.fn (this) phần thứ dường như không làm cho bất kỳ đầu ra. Khi làm điều này tôi gặp lỗi trong bảng điều khiển có nội dung: "Bạn không thể sử dụng appendChild ngoài quá trình hiển thị"

Nếu điều này là không thể, có thể ai đó có thể đề xuất cách khác để đạt được khối điều kiện chỉ hiển thị nếu giá trị giới hạn không được xác định?

Trả lời

4

Tôi chỉ dành một loạt thời gian để đấu tranh và tìm thấy một loại sửa chữa. Tôi đã xem xét yêu cầu kéo với việc thực hiện phương thức registerBoundHelper.

tôi đã thêm dòng sau vào dòng này: https://github.com/emberjs/ember.js/pull/1274/files#L0R357

Ember.run.scheduleOnce('render', view, 'rerender') 

Dường như các phương pháp boundHelper chỉ kết thúc tốt đẹp các phương pháp helper ban đầu và tạo một cái nhìn vô danh. Vấn đề duy nhất là người quan sát đặt chế độ xem ẩn danh vào chế độ hiển thị mà không đặt chế độ xem gốc vào cùng một đầu tiên.

Ít nhất đó là những gì tôi nghĩ đang diễn ra. Dù sao, nó hoạt động cho tôi bây giờ. Có lẽ đây là một lỗi?

+1

Xin chào Paul. Cảm ơn cho đăng thông tin này. Tôi đang chạy phiên bản chủ của Ember vào lúc này nên tôi không thể đưa giải pháp của bạn vào thực tế. Tuy nhiên tôi nghĩ rằng bạn đúng về quan điểm ban đầu không được rerendered. Với những thay đổi mà chúng đã thực hiện, không dễ dàng như việc thêm dòng bạn đề cập khi chúng thực hiện lại hàm trong một hàm và ngữ cảnh của hàm đó không có quyền truy cập vào chế độ xem gốc. Có thể đáng để mở một lỗi về điều này khi tôi có thể thu hẹp hành vi. –

+0

có sự cố chưa? –

+0

không tìm thấy, mở một: https://github.com/emberjs/ember.js/issues/2237 –

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