javascript - 如何比较 Handlebars.js 中循环中的两个属性,其中一个属性位于循环范围之外?

标签 javascript html handlebars.js

我使用 Handlebars.js 根据字符串是否与当前用户的用户名匹配来显示元素。

我实际上是在循环访问 blogs 集合,这就是属性 author 发挥作用的地方。无论如何,author.username 代表一些用户名字符串,这对我来说是可用的。我的问题是,如果我将 user.attributes.username 更改为某个预定义的字符串,即“martin”,那么条件会检查出来并按照我想要的方式显示元素。但我还有一个属性 user.attributes.username 并且在 #ifEquals 条件之外呈现得很好。我真的想将 author.username 与此属性进行比较,而不是一些预定义的字符串。

如何比较两个属性,即 author.usernameuser.attributes.username 而不是 author.username “马丁”

author.usernameuser.attributes.username 具有相同的值。这现在对我不起作用,但这是我最终想要的:

{{#each blog}}
        {{#ifEquals author.username user.attributes.username}}
            <a href="#" onClick="return false;"><span class="delete-container" style="cursor: pointer" data-blog-id="{{objectId}}"><span class="typcn typcn-arrow-sorted-down hvr-pulse-grow" style="color: gray; font-size: 30px;"></span></span></a>
        {{/ifEquals}}
{{/each}}

这可以工作,但不足以满足我的目的:

{{#each blog}}
        {{#ifEquals author.username "martin"}}
            <a href="#" onClick="return false;"><span class="delete-container" style="cursor: pointer" data-blog-id="{{objectId}}"><span class="typcn typcn-arrow-sorted-down hvr-pulse-grow" style="color: gray; font-size: 30px;"></span></span></a>
        {{/ifEquals}}
{{/each}}

Handlebars.js 助手:

<script>
    Handlebars.registerHelper('ifEquals', function(arg1, arg2, options) {
        return (arg1 == arg2) ? options.fn(this) : options.inverse(this);
    });
</script>

编辑:经过进一步检查,问题似乎是 user.attributes.username 不会在 blog 循环内呈现。它认为userblog的一个属性。有没有办法访问user,就好像它在循环范围之外一样?

最佳答案

显然,您可以通过附加 ../ 来访问 Handlebars.js 中的外循环属性

{{currentUser.username}}//在循环外渲染良好

 {{#each blog}}
    // Append ../ to access currentUser inside the loop
    {{#ifEquals author.username ../currentUser.username}}
        // Show element here
    {{/ifEquals}}
 {{/each}}

../user 是来自 blog 循环外部的属性,而 author 属于 blog >.

关于javascript - 如何比较 Handlebars.js 中循环中的两个属性,其中一个属性位于循环范围之外?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46305292/

相关文章:

ember.js - 多次设置 sortProperties 后 Ember Computed.sort 失败

javascript - jquery href 与 handlebars 链接冲突

javascript - 如何使用 JavaScript 暂时禁用文本选择?

javascript - 应始终显示带有工具提示消息的进度条

javascript - 缩小的 JavaScript 代码会提高性能吗?

javascript - 如何在 AngularJS Forms 的 `<options>` 元素中改变 `<select>`

html - SASS/SCSS 是一种制作 OOCSS 的方法吗?

html - 图片在 Chrome 中加载,但在 Firefox 中不加载

css - 如何在 HTML 5 中裁剪图像?

html - 如何禁用 Ember.js 选择菜单中的第一个选项