2012-04-18 91 views
0

我正在使用HAML和jQuery來編寫我的應用程序。我有一個用於顯示URL鏈接的「共享」模板。我希望它很靈活,以便根據傳入的變量顯示不同的URL。如何檢查變量是否未定義

//Code to trigger view and populate template -> Note I only pass in the thread vara here 
share_view = new Onethingaday.Views.Threads.ShareView 
    thread: new Onethingaday.Models.Thread(@options.thread_muses.first().get('question')) 

//snippet from share view to pass the variables to the template 
render: -> 
    $(@el).html @template 
    nickname: @options.nickname 
    thread_slug: @options.thread.get('slug') 
    thread_text: @options.thread.get('text') 
    @ 

//Snippet of share view's template. Added if-else statement to check if nickname is defined 
.sidebar_text Link: 
    <% if (typeof <%= nickname %> !== "undefined") { %> 
    %input.detail_text{value: "<%= 'http://dailymus.es/' + nickname + '/threads/' + thread_slug %>"} 
    <% } else { %> 
    %input.detail_text{value: "<%= 'http://dailymus.es/' + '/threads/' + thread_slug %>"} 
    <% } %> 

在上面的例子中,我沒有定義「暱稱」變量。我想到的是,其他部分將被觸發,顯示的URL爲「http://dailymus.es/threads/some-slug-text

但是我仍然得到以下

enter image description here

正如你看到的,它仍然引發了「如果」部分並將「未定義」顯示爲網址的一部分。

如何在我的情況下正確檢查'undefined'變量?

+0

也許「暱稱」是越來越設置爲空?在這種情況下,它的類型將是「對象」而不是「未定義」。 – McGarnagle 2012-04-18 06:56:26

+0

你還需要在'<%=%>包''nickname'時,它已經在一個? – rkw 2012-04-18 06:59:12

+0

@dbaseman,我做了一個控制檯日誌的console.log(typeof運算@ options.nickname),結果給了我「未定義」 – Zhen 2012-04-18 08:27:05

回答

1

你還需要在<%包裹暱稱=%>時,它已經在一個?