现在我很容易写了一个模板:
Hello, my name is {name}, I'm {age}.
然后打开这个网站:http://linkedin.github.io/dustjs/test/test.html,做一些粘贴,模板js代码生成如下:
(function() {
dust.register("demo", body_0);
function body_0(chk, ctx) {
return chk.write("Hello, my name is ").reference(ctx._get(false, ["name"]), ctx, "h").write(", I'm ").reference(ctx._get(false, ["age"]), ctx, "h").write(".");
}
return body_0;
})();
然后我创建了一个js文件并复制上面生成的所有js代码并将其引用到我的应用程序中:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>DustDemo</title>
<script src="jsfiles/dust.js"></script>
<script src="jsfiles/staticpagetemplate.js"></script>
<script>
function Demo1() {
dust.render("demo", { name: "test", age: 13 }, function (err, out) {
alert(out);
});
}
</script>
</head>
<body onload="Demo1()">
<h1>Demo 1——Static Page</h1>
<div id="divDemo1">
</div>
</body>
</html>
问题是,如果我这样使用,它会报告我找不到“_get”。后来我发现了dust.js中的问题:
Context.prototype.get = function (key) {
var ctx = this.stack, value;
while (ctx) {
if (ctx.isObject) {
value = ctx.head[key];
if (!(value === undefined)) {
return value;
}
}
ctx = ctx.tail;
}
return this.global ? this.global[key] : undefined;
};
所以没有“_get”而是“get”而不是!
为什么这个MISMATCHES翻译在线?任何人都可以帮助我?
答案 0 :(得分:0)
您可能在jsfiles/dust.js
中使用旧版本的Dust。截至Dust 2.2.0 get
已替换为_get
。 http://linkedin.github.io/dustjs/test/test.html上的编译器使用新版本的Dust,因此它使用_get
而不是get
编译模板。
您已使用新版本的Dust编译模板,但是您尝试使用旧版本的Dust渲染它,并且两者不兼容。