Dưới đây là một chút xây dựng chức năng tắt của câu trả lời soniiic của :
function loadExternalKnockoutTemplates(callback) {
var sel = 'script[src][type="text/html"]:not([loaded])';
$toload = $(sel);
function oncomplete() {
this.attr('loaded', true);
var $not_loaded = $(sel);
if(!$not_loaded.length) {
callback();
}
}
_.each($toload, function(elem) {
var $elem = $(elem);
$elem.load($elem.attr('src'), _.bind(oncomplete, $elem));
});
}
này sẽ tự động tải tất cả các mẫu loại trực tiếp trên tài liệu của bạn, với điều kiện src của họ được thiết lập và loại của họ là "text/html". Chuyển qua một cuộc gọi lại để được thông báo khi tất cả các mẫu được tải. Không biết điều gì sẽ xảy ra nếu bất kỳ lỗi nào trong số đó không thành công.
Ví dụ sử dụng:
<head>
<script type="text/html" src="kot/template1.html" id="template1"></script>
</head>
<body>
<script>
$(function() {
loadExternalKnockoutTemplates(function() {
// Put your ready code here, like
ko.applyBindings();
});
});
function loadExternalKnockoutTemplates(callback) {
var sel = 'script[src][type="text/html"]:not([loaded])';
$toload = $(sel);
function oncomplete() {
this.attr('loaded', true);
var $not_loaded = $(sel);
if(!$not_loaded.length) {
callback();
}
}
_.each($toload, function(elem) {
var $elem = $(elem);
$elem.load($elem.attr('src'), _.bind(oncomplete, $elem));
});
}
</script>
</body>
Nguồn
2014-04-07 01:10:29
Bạn cũng có thể kiểm tra câu hỏi này: http://stackoverflow.com/questions/17073648/load-knockout-template-from-external-file-without-complex-engine. Nó thảo luận các mẫu bên ngoài cho KnockoutJS mà không cần sử dụng các khung bên thứ 3. –