Проверка свойства объекта, переданного в jquery tmpl - PullRequest
0 голосов
/ 06 декабря 2011

У меня есть пример данных, как это:

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 ]

3 голосов
/ 19 сентября 2012

Недавно я столкнулся с этой проблемой и попробовал решение, предоставленное idrumgood. К сожалению, в моем случае данные могут быть нулевыми или могут быть неопределенными и

typeof null === "object"

, поэтому использование typeof для значения не делает различий между нулевыми и фактическими данными, что приводит к ошибке в шаблонах jquery. Я обнаружил, что если вы поместите переменную в переменную $ data template, вы сможете избежать этой проблемы. Например, вместо этого:

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

используйте это:

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

Вот jsfiddle , демонстрирующий это решение

2 голосов
/ 06 декабря 2011

Вы должны быть в состоянии использовать:

if(typeof opt3 == "string")

Или, если у вас есть что-то кроме строки:

if(typeof opt3 != "undefined")
...