3

変数 (curBranch) が配列 (user.subscribed) の要素と等しくない場合は「購読」ボタンを、そうでない場合は「購読解除」ボタンをユーザーに提供したいと考えています。私はこれを試しました:

- if (user != null)
  isSubscribed = false
  each subscription in user.subscribed
    - if (subscription === curBranch)
      isSubscribed = true
      form(action='/unsubscribe/#{curBranch}')
        button(type='submit') Unsubscribe

  - if (isSubscribed === false)
    form(action='/subscribe/#{curBranch}')
      button(type='submit') subscribe

最初の部分 (改行の前) は完全に機能します。しかし、ジェイドは for ループが完了する前に 3 番目の if 文を実行しているようです。

これを順番に実行する方法はありますか、別の方法を使用する必要がありますか?

4

2 に答える 2

6

ループの代わりに Array.indexOf() を使用して行う必要があります。

-if (user != null)
  -if (user.subscribed.indexOf(curBranch) > -1)
    form(action='/unsubscribe/#{curBranch}')
      button(type='submit') Unsubscribe
  -else
    form(action='/subscribe/#{curBranch}')
      button(type='submit') subscribe

警告: indexOf IE のサポートは IE9 にのみ付属しています。jQuery を実行している場合は、underscorejs を使用する$.inArray(value, array)_.contains(list, value)使用できます。

于 2013-04-30T08:20:01.773 に答える
1

これを試して:

if user != null
isSubscribed = false
each subscription in user.subscribed
  if subscription == curBranch
    isSubscribed = true
    form(action='/unsubscribe/#{curBranch}')
      button(type='submit') Unsubscribe

if isSubscribed == false
  form(action='/subscribe/#{curBranch}')
    button(type='submit') subscribe
于 2013-04-29T07:06:00.290 に答える