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

第一部分(换行之前)完美运行。但是,jade 似乎在 for 循环完成之前执行了第三个 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,则可以使用$.inArray(value, array)_.contains(list, value)使用 underscorejs。

于 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 回答