Fla*_*ken 7 javascript mustache
根据胡子RFC
基本模板中的{{name}}标记将尝试在当前上下文中查找名称键.如果没有名称键,则不会呈现任何内容.
因此我期待这样:
var template = '{{#anArray}}{{aString}}{{/anArray}}';
var json = {
"aString":"ABC",
"anArray": [1,{"aString":"DEF"}]
};
Run Code Online (Sandbox Code Playgroud)
给我一次渲染:
"DEF"
Run Code Online (Sandbox Code Playgroud)
但是,mustache.js会在父级范围内查找值.哪能给我
"ABCDEF"
Run Code Online (Sandbox Code Playgroud)
上下文实际上意味着包括所有父母范围吗?
简短的回答:是的。
有点长的答案。Context.prototype.lookup做一个 while 循环,在当前上下文和它的父上下文中查找一个标记,而有一个父上下文。
相关代码:
Context.prototype.lookup = function (name) {
var value = this._cache[name];
if (!value) {
if (name === ".") {
value = this.view;
} else {
var context = this;
//Iterate ancestor contexts
while (context) {
if (name.indexOf(".") > 0) {
var names = name.split("."), i = 0;
value = context.view;
while (value && i < names.length) {
value = value[names[i++]];
}
} else {
value = context.view[name];
}
if (value != null) {
break;
}
context = context.parent;
}
}
this._cache[name] = value;
}
if (typeof value === "function") {
value = value.call(this.view);
}
return value;
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1636 次 |
| 最近记录: |