2013-07-01 26 views
5

Tôi khá mới để lập trình và đặc biệt là các tay lái. Tôi có một div nạp với sự kết hợp của jquery và tay lái trong tập tin html của tôi. Tôi có các tab trên đầu trang của nó. Tôi muốn tải lại tất cả nội dung sang một nội dung mới khi có nhấp chuột trên tab. Nội dung tương tự (cùng một cấu trúc) nhưng nhãn, hình ảnh và vv phải thay đổi. Tôi đã thử sử dụng một phần trong handlebars.js. Đây là mã mẫu.Reloading partials handlebars

<script type="text/x-handlebars-template" id="all-handlebar"> 
    {{#each tabs}} 
     <div id=tab{{@index}}>{{this.text}}</div> 
    {{/each}} 
    <div id="tab-content">{{> tabContentPartial}} 
</script> 
<script type="text/x-handlebars-template" id="tab-content-partial"> 
    <div id="mycontent"> 
     <div id="text">{{mycontent.text}}</div> 
     <div id="text">{{mycontent.image}}</div> 
    </div>  
</script> 
<script type="text/javascript"> 
    source=$("#all-handlebar").html(); 
    var template = Handlebars.compile(source); 
    Handlebars.registerPartial("tabContentPartial", $("#tab-content-partial").html()) 
    var context = { 
     mycontent : { 
      text="something that has to change everytime I click on a different tab", 
      image="idem" 
    }; 
    var html = template(context); 
    $("body").html(html); 
</script> 

Nó tải cũng lần đầu tiên nhưng khi tôi bấm vào tab, tôi yêu cầu anh ta lại registerPartial kịch bản tab-content-một phần và nó không tồn tại nữa vì nó đã thay đổi sang HTML khối đúng trong mã của tôi. Làm thế nào có thể tái sử dụng và tải lại kịch bản một phần của tôi với nội dung mới?

Cảm ơn bạn rất nhiều!

+1

Sẽ hữu ích nếu bạn cung cấp một số mã có liên quan. Thông thường bạn vượt qua biên dịch của bạn mẫu thanh điều khiển của bạn. Sau đó, bạn chuyển dữ liệu của bạn và nó trả về html tạo mà bạn sau đó chèn vào trang của bạn. Mẫu được biên dịch này, bạn có thể sử dụng lại với các dữ liệu khác nhau. –

+0

Bây giờ có rõ ràng hơn không? Xin lỗi vì sự chậm trễ, tôi đã cố gắng xem xét các giải pháp khác nhau. –

Trả lời

4

Phần chuyển đổi tab thiếu mã và cách bạn truy xuất dữ liệu, vì vậy tôi chỉ có thể cho bạn biết bạn cần làm gì ở nơi bạn nghe chuyển đổi tab .

Để đạt được điều này bạn chỉ cần cũng để biên dịch #tab-content-partial bạn cho việc này bạn không cần phải thay đổi nhiều:

var source=$("#all-handlebar").html(); 
var contentSrc=$("#tab-content-partial").html(); 
var template = Handlebars.compile(source); 
var contentTemplate = Handlebars.compile(contentSrc); 

//because you already have a compiled version of your content template now you can pass this as partial 
Handlebars.registerPartial("tabContentPartial", contentTemplate); 
var context = { 
    mycontent : { 
     text : "something that has to change everytime I click on a different tab", 
     image : "idem" 
    } 
}; 

var html = template(context); 
$("body").html(html); 

Sau đó, vào thời điểm mà bạn cần phải thay đổi nội dung mà bạn sẽ chỉ cần vượt qua các dữ liệu nội dung cho mẫu nội dung và sau đó thay thế nội dung của #tab-content bằng kết quả mới. Bằng cách này bạn cũng có thể tạo các mẫu nội dung khác nhau.

//replace the content with the result of the template 
$("#tab-content").html(contentTemplate(newContent)); 

Tôi hy vọng đây là những gì bạn đang tìm kiếm, nếu không muốn hỏi.

+0

Đó chính xác là những gì tôi đang tìm kiếm! Cảm ơn bạn rất nhiều, nó đã giải quyết được vấn đề của tôi. –

+1

bạn có thể vui lòng cung cấp fiddle cho điều này? – pravid

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