2011-09-05 35 views
0

我試圖創建與jQuery,鬍子和薩米couchapp。將有好幾頁,我會產生他們是這樣的:小鬍子使用JSON不執行功能

$(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和我有什麼替代數據和函數是個好主意? 感謝

回答

1

你的心不是拉姆達正確申報。您的JSON應該返回一個匿名函數,它的鬍子將被執行。

這裏是你應該怎麼做。

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); 

Live Demo