文字列が現在のユーザーのユーザー名と一致するかどうかによって、Handlebars.jsを使用して要素を表示しています。Handlebars.jsのループ内の2つの属性を比較するには、1つの属性がループスコープ外にあるかどうかを確認します。
私は実際にコレクションblogs
をループしています。これは、属性author
が出場するところです。どちらにかかわらず、author.username
はユーザー名文字列を表し、これは私にとって利用可能です。私の問題は、user.attributes.username
をあらかじめ定義された文字列、つまり「martin」に変更すると、条件がチェックアウトされ、必要な方法で要素が表示されることです。しかし、私も属性がuser.attributes.username
であり、これは#ifEquals
の状態の外でうまくレンダリングします。私は実際にauthor.username
をこの属性と比較したいと思います。あらかじめ定義された文字列ではありません。
は、どのように私は2つの属性、user.attributes.username
代わりの"martin"
とauthor.username
と、すなわちauthor.username
を比較することができますか?
author.username
とuser.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
ループ内に描画しません。 user
はblog
の属性であると考えています。ループの範囲外にあるかのようにuser
にアクセスする方法はありますか? author
がblog
に属しているのに対し、
あなたは 'ember.js'を使用していますか? – Lux
いいえ、偶然にタグを追加しました。ありがとう。それを削除しました。 – santafebound