function {{modelName}}(data) {{% for fieldName in fields %} {{fieldName}} = ko.observable(){% if not forloop.last %},{%endif%}{% endfor %} } function {{modelName}}ViewModel() { var self = this; self.{{modelName|lower}}s = ko.observableArray({%if data%}{{modelName}}Data{%else%}[]{%endif%}); self.add{{modelName}} = function() { self.{{modelName}}s.push(new {{modelName}}({ })); }; self.remove{{modelName}} = function({{modelName|lower}}){ self.{{modelName|lower}}s.remove({{modelName|lower}}) }; } ko.applyBindings(new {{modelName}}ViewModel());