2011-06-22 79 views
24

Tôi muốn sử dụng mustache.js với jQuery trong ứng dụng HTML5 của mình, nhưng tôi không thể làm cho tất cả thành phần hoạt động cùng nhau. Mỗi tập tin được tìm thấy, không có vấn đề ở đây (mẫu được nạp roght, tôi có thể thấy giá trị của nó trong trình gỡ lỗi Firebug).Mustache.js + jQuery: ví dụ làm việc tối thiểu là gì?

Đây là index.html của tôi:

<!DOCTYPE html> 
<html lang="fr"> 
    <head><meta charset="utf-8"></head> 
    <body> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> 
     <script src="../js/jquery.mustache.js"></script> 
     <script src="../js/app.js"></script> 
     <div id="content"></div> 
    </body> 
</html> 

Đây là app.js tập tin của tôi:

$(document).ready(function() { 
    var template = $.get('../templates/article.mustache'); 
    $.getJSON('../js/article.json', function(view) { 
     var html = Mustache.to_html(template, view); 
     $("#content").append(html); 
    }); 
}); 

File jquery.mustache.js là một tạo ra từ https://github.com/janl/mustache.js:

/* 
Shameless port of a shameless port 
@defunkt => @janl => @aq 

See http://github.com/defunkt/mustache for more info. 
*/ 

;(function($) { 

// <snip> mustache.js code 

    $.mustache = function(template, view, partials) { 
    return Mustache.to_html(template, view, partials); 
    }; 

})(jQuery); 

Thông báo được hiển thị. Firebug nói với tôi

Moustache không được định nghĩa

Xem chụp: enter image description here

tôi biết điều gì đó là mất tích, nhưng tôi không thể nói gì.

Cảm ơn.


EDIT: Câu trả lời đúng và đầy đủ để một tối thiểu ví dụ như sau:

  • viết mẫu trong kịch bản, không tải nó từ một tập tin
  • idem cho dữ liệu json
  • đọc cách tạo jQuery và sử dụng hàm $.mustache.to_html thay vì (được ghi trên githu b) Mustache.to_html (nhờ @mikez302)
  • Refactor 'cho đến khi bạn thả
 
$(document).ready(function() { 
    var template = " ... {{title}} ... "; 
    var json = {title: "titre article" } 
    var article = $.mustache(template, json); 
    $("#content").append(article); 
}); 

Nhưng, nó rất dễ dàng để đọc các json từ tập tin khác:

 
$(document).ready(function() { 
    var template = " ... {{title}} ... "; 
    $.getJSON('../js/article.json', function(view) { 
    var article = $.mustache(template, view); 
    $("#content").append(article); 
    }); 
}); 

Bạn cuối cùng cũng có thể đọc mẫu từ một tệp:

 
$(document).ready(function() { 
    $.getJSON('../js/article.json', function(view) { 
    $.get("../templates/article.mustache", function(template) { 
     var article = $.mustache(template, view); 
     $("#content").append(article); 
    }); 
    }); 
}); 

Ví dụ làm việc (không có l oading order problems):

 
$(document).ready(function() { 
    $.getJSON('../js/article.json', function(model) { return onJSON(model); }); 
}); 

function onJSON(model) { 
    $.get("../templates/article.mustache", function(view) { 
    var article = $.mustache(view, model); 
    $("#content").append(article); 
    }); 
} 
+1

Tôi sẽ đặt tất cả JavaScript ** sau ** nội dung. [LINK] (http://developer.yahoo.com/blogs/ydn/posts/2007/07/high_performanc_5/) – Sparky

+0

cảm ơn mẹo. Tôi không tìm kiếm tối ưu hóa ngay bây giờ, tôi kiến ​​để làm cho mã của tôi làm việc –

+4

Tôi đăng nó như một bình luận và không phải là một câu trả lời. Tất nhiên, thứ tự ** trong đó bạn tải kịch bản của bạn bao gồm _also_ vấn đề để làm cho mã làm việc. Nếu bạn là người mới bắt đầu với JavaScript, thông tin này là một yếu tố quan trọng 'phải đọc'. Tất cả những người mới bắt đầu đều biết họ cần tải jQuery _before_ họ tải jQueryUI hoặc bất kỳ plugin jQuery nào khác không? – Sparky

Trả lời

11

Thay cho Mustache.to_html, hãy thử $.mustache. Dường như với tôi, biến số Mustache được xác định trong hàm, vì vậy nó không thể truy cập trực tiếp bên ngoài nó.

6

Tôi biết câu hỏi này đã được trả lời, tuy nhiên tôi đã viết một bài đăng trên blog về chủ đề này và nghĩ rằng tôi sẽ chia sẻ nó ở đây để mọi người tìm kiếm ví dụ về cách sử dụng Mustache với jQuery có thể thấy nó.

http://blog.xoundboy.com/?p=535

+1

Một vài năm sau đó rất có thể được mong đợi, nhưng tôi muốn cho bạn biết liên kết blog của bạn đã chết. – Prefix

+0

@Prefix cảm ơn cho người đứng đầu lên, tôi chỉ đọc nhận xét này từ bạn, xin lỗi vì sự chậm trễ. Bây giờ nó đã sao lưu :) – Xoundboy

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