2013-04-28 40 views
2

如果變量(curBranch)不等於數組中的任何元素(user.subscribed),我想給用戶一個'subscribe'按鈕,或者如果不是,則取消訂閱按鈕。我試過這個:jade - 如果var不等於數組中的任何元素,則顯示foo

- 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循環完成之前,玉似乎執行了第三個if語句。

有沒有辦法讓這個按順序運行,或者,有一種不同的方法,我應該使用?

回答

4

你應該使用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 

警告:IE的indexOf只支持comes with IE9。如果您正在運行jQuery,則可以使用下劃線使用$.inArray(value, array)_.contains(list, value)

+0

看起來好像如果你使用' - if'而不是'if'你也需要使用parens。否則,這工作完美。 – 2013-05-08 20:55:43

+0

哦,當然!我編輯過。 – 2013-05-08 22:18:21

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 
相關問題