2011-12-05 34 views
0

我有這樣一個簡單的數據:檢查屬性傳遞物體上的jQuery TMPL

data = {opt1: 'One', opt2:'Two', opt3:'Three'}; 

tmplString = <li>${opt1}</li><li>${opt2}</li>??IF OPT3?? 

$('#node').append(tmplString, data); 

在我tmplString我想渲染opt3只有在數據傳遞有一個名爲opt3屬性。如果我使用{{if opt3}},則在數據中沒有opt3時會引發錯誤。有沒有辦法可以使用像if(prop in obj)之類的東西。

回答

2

您應該能夠使用:

if(typeof opt3 == "string") 

或者,如果你可能有字符串以外的東西在裏面:

if(typeof opt3 != "undefined") 
+0

你的意思是:「{​​{如果typeof運算$ {OPT3} =「未定義! '}}「? – ChrisOdney

+0

我對jQuery模板語法並不熟悉,但是我擁有的是普通的老js,如果可以的話。 – idrumgood

+0

它工作!你是怎麼想出來的? – ChrisOdney

2

我最近就遇到了這個問題,並試圖提供的解決方案由idrumgood。不幸的是在我的情況下,數據可能爲空,或者它可能是不確定的和

typeof null === "object" 

所以使用typeof的價值從而導致錯誤的jQuery模板空與實際數據之間沒有區別。我發現如果你用$ data模板變量來確定變量的範圍,你可以避免這個問題。例如,而不是這樣的:

{{if opt3}}<li>${opt3}</li> 

使用本:

{{if $data.opt3}}<li>${opt3}</li> 

這裏是一個jsfiddle展示該解決方案