0

jquery、口ひげ、サミーで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 に保存することは良い考えですか? また、どのような代替手段がありますか? ありがとう

4

1 に答える 1

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

ライブデモ

于 2011-09-18T08:25:48.657 に答える