我正在尝试用jquery, mustache和sammy创建couchapp。将有几个页面,我将像这样生成它们:
$(function () {
var $db = $.couch.db('test');
var app = $.sammy(function () {
this.get('#/', function () {
render('json/index.json', 'mustache/index.ms');
});
this.get('#/login', function () {
render('json/login.json', 'mustache/login.ms');
});
this.get('#/register', function () {
render('json/register.json', 'mustache/register.ms');
});
this.put('#/post/register', register);
this.put('#/post/login', login);
});
app.run('#/')});
然后:
function render(xjson, xms) {
$.getJSON(xjson, function (data) {
$.get(xms, function (template) {
var html = Mustache.to_html(template, data);
$('#content').empty();
$('#content').append(html);
});
});}
.js是JSON文件,我存储的数据。ms文件是胡子模板。事情是,当我试图把一个函数JSON就像这里描述的:https://github.com/janl/mustache.js
var view = {
title: "Joe",
calc: function() {
return 2 + 4;
}
}
var template = "{{title}} spends {{calc}}";
var html = Mustache.to_html(template, view);
函数不执行。那么,我做错了什么?在JSON中存储数据和函数是一个好主意吗?我有什么替代方案?由于
你的lambda声明不正确。你的json应该返回一个匿名函数,mustache会执行这个函数。
你应该这样做。
var view = {
title: "Joe",
calc: function() {
return function(text) {return (2 + 4)}
}
}
var template = "{{title}} spends {{#calc}} {{/calc}}";
var html = Mustache.to_html(template, view);
现场演示