首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传递处理程序后,Handlebar上下文丢失

问传递处理程序后,Handlebar上下文丢失
EN

Stack Overflow用户
提问于 2012-07-19 22:05:14
回答 1查看 2.8K关注 0票数 2

我确信这是非常基础的,但是我不能在{{#if_eq}}中使用../模型。我甚至尝试使用../../模型,它指向model._revs_info的一个子级。

代码语言:javascript
复制
  {{#each model._revs_info}} 
        {{debug ../model}}
        {{#if_eq status compare="available"}} 
            {{debug ../model}}
            <a href="#list/{{model.id}}/{{rev}}">{{rev}}</a>
         {{/if_eq}}                                      
  {{/each}}         

已从https://github.com/danharper/Handlebars-Helpers/blob/master/helpers.js复制{{#if_eq}}

代码语言:javascript
复制
/**
 * 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);
});

已从http://thinkvitamin.com/code/handlebars-js-part-3-tips-and-tricks/复制{{debug}}

代码语言:javascript
复制
Handlebars.registerHelper("debug", function(optionalValue) {
  console.log("Current Context");
  console.log("====================");
  console.log(this);

  if (optionalValue) {
    console.log("Value");
    console.log("====================");
    console.log(optionalValue);
  }
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-21 19:24:32

根据Handlebars documentation on paths的说法,

../ path段引用了父模板作用域,而不是上下文中的上一级。这是因为块帮助器可以调用具有任何上下文的块,所以“上一级”的概念除了作为对父模板作用域的引用之外并没有特别的意义。

每个块帮助器定义一个作用域,因此在if_eq中,层次结构如下所示

  1. 基本模板,
  2. each scope,
  3. if_eq scope。

指向祖父母../../model,您就会得到正确的上下文。

和一个基于你的代码的小提琴和另一个激活了调试的http://jsfiddle.net/aFGD6/1/

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11562612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档