2016-03-26 3 views
1

Это работает повсюду ... Я действительно не уверен, как рассуждать об этом.интерполяция нефрита не работает в атрибуте

Код непосредственно ниже выполняет интерполяцию checkedValue, но из-за того, что вокруг объекта checkedValue есть флажок, он сохраняет флажок. Но я не могу удалить кавычки, иначе это не сработает.

extends layout 

block content 
    h1.headLine= challenge.title 
    p Difficulty: #{challenge.difficulty} #{checkedValue} Points: #{challenge.points} //checkedValue interpolates to true or false 
    p= challenge.description 
    form(action="/submitChallenge" method="post") 
    label(for="challenge1") Mark as Solved! 
    input(type="checkbox" id="challenge" checked="#{checkedValue}" name="challenge" value="#{challenge._id}") 
    p #{checkedValue} //interpolates here too, without any " " 
    button(type="submit") Submit 

Следующий код просто оставляет # {checkedValue} как есть без интерполяции. Так .. это тоже не работает, даже если # {} challenge._id работает нормально !:

input(type="checkbox" id="challenge" "#{checkedValue}" name="challenge" value="#{challenge._id}") 

Я также попытался удалить кавычки.

Ничто не работает. В настоящее время переменная является логическим значением, но на самом деле не имеет значения, не могу ли я ее интерполировать!

Я подумал о том, чтобы установить его «проверено» или «» для непроверенных, но ... Мне все равно нужно его интерполировать.

+0

«checked» - это логический атрибут, означающий, что его присутствие, а не его значение, определяет свойство элемента. Пока он объявлен, флажок будет проверяться независимо от того, какое значение оно задано. Чтобы флажок не отмечен, не объявляйте атрибут 'checked'. – Terry

+0

Я знаю, но это на самом деле не совсем так. Вы можете установить флажок UN-checked с отмеченным = false, но checked = "false" отметит этот флажок. Кроме того, мне нужен динамический флажок. Раньше у меня никогда не было проблем с этим. На некоторых страницах будет установлен флажок, и это зависит от пользователя. Почему я не могу это сделать? –

+0

Используете ли вы метод HTML5? Возможно, это и есть разница. Также смотрите: http://stackoverflow.com/questions/7851868/whats-the-proper-value-for-a-checked-attribute-of-an-html-checkbox – Terry

ответ

0

В Jade атрибут checked должен использовать логическое значение и не быть интерполированным как строка. Также убедитесь, что у вас есть doctype html где-то в вашем шаблоне.

doctype html 
input(type="checkbox" id="challenge" checked=!!checkedValue name="challenge" value="#{challenge._id}") 

Со следующими данными и значением falsey (0, undefined, null или false)

{ 
    challenge: { _id: 1432513 }, 
    checkedValue: false 
} 

Вернется

<!DOCTYPE html> 
<input type="checkbox" id="challenge" name="challenge" value="1432513"> 

и значение truthey

checkedValue: true 

Вернется

<input type="checkbox" id="challenge" checked name="challenge" value="1432513"> 

Смотрите раздел in the Jade documentation булева Атрибуты и попробовать вышеуказанные значения в online demo.

Смежные вопросы