- KnockoutJS Essentials
- Jorge Ferrando
- 218字
- 2021-07-23 20:16:17
Managing templates with jQuery
Since we want to load templates from different files, let's move all our templates to a folder called views
and make one file per template. Each file will have the same name the template has as an ID. So if the template has the ID, cart-item
, the file should be called cart-item.html
and will contain the full cart-item
template:
<script type="text/html" id="cart-item"></script>

The views folder with all templates
Now in the viewmodel.js
file, remove the last line (ko.applyBindings(vm)
) and add this code:
var templates = [
'header',
'catalog',
'cart',
'cart-item',
'cart-widget',
'order',
'add-to-catalog-modal',
'finish-order-modal'
];
var busy = templates.length;
templates.forEach(function(tpl){
"use strict";
$.get('views/'+ tpl + '.html').then(function(data){
$('body').append(data);
busy--;
if (!busy) {
ko.applyBindings(vm);
}
});
});
This code gets all the templates we need and appends them to the body. Once all the templates are loaded, we call the applyBindings
method. We should do it this way because we are loading templates asynchronously and we need to make sure that we bind our view-model when all templates are loaded.
This is good enough to make our code more maintainable and readable, but is still problematic if we need to handle lots of templates. Further more, if we have nested folders, it becomes a headache listing all our templates in one array. There should be a better approach.
- OpenDaylight Cookbook
- C語言程序設計(第3版)
- Python量化投資指南:基礎、數據與實戰
- DevOps for Networking
- DevOps入門與實踐
- Java持續交付
- The Data Visualization Workshop
- 軟件項目管理實用教程
- 程序員修煉之道:通向務實的最高境界(第2版)
- Getting Started with React Native
- Unity&VR游戲美術設計實戰
- 軟件體系結構
- Test-Driven iOS Development with Swift
- Pandas入門與實戰應用:基于Python的數據分析與處理
- 狼書(卷2):Node.js Web應用開發