我确信这是非常基本的,但我无法在{{#if_eq}}
内使用../model。我甚至尝试使用../../model,这指向了model._revs_info的孩子。
{{#each model._revs_info}}
{{debug ../model}}
{{#if_eq status compare="available"}}
{{debug ../model}}
<a href="#list/{{model.id}}/{{rev}}">{{rev}}</a>
{{/if_eq}}
{{/each}}
{{#if_eq}}
已从https://github.com/danharper/Handlebars-Helpers/blob/master/helpers.js
/**
* If Equals
* if_eq this compare=that
*/
Handlebars.registerHelper('if_eq', function(context, options) {
if (context == options.hash.compare)
return options.fn(this);
return options.inverse(this);
});
{{debug}}
已从http://thinkvitamin.com/code/handlebars-js-part-3-tips-and-tricks/
Handlebars.registerHelper("debug", function(optionalValue) {
console.log("Current Context");
console.log("====================");
console.log(this);
if (optionalValue) {
console.log("Value");
console.log("====================");
console.log(optionalValue);
}
});
答案 0 :(得分:4)
根据Handlebars documentation on paths,
../路径段引用父模板范围,而不是一个 在上下文中升级。这是因为块助手可以调用a 阻止任何上下文,所以“一级”的概念不是 除了作为对父模板的引用之外,特别有意义 范围。
每个块助手都定义了一个范围,因此if_eq中的层次结构看起来像
指向祖父母../../model
并获得正确的背景。
基于您的代码的小提琴http://jsfiddle.net/aFGD6/另一个有调试活动的小提琴,http://jsfiddle.net/aFGD6/1/