2013-11-01 5 views
0

В моем текущем проекте у меня есть привязка нокаута, где высота макета должна применяться в соответствии с полученным значением как true или false. Ниже мой обязательный кодKnockout data-bind if else condition

data-bind="style: {height: showOld ? '392px' : '275px'}" 

showOld дает либо true или false правильно, но, независимо от того, что он возвращается, он всегда принимает 392px. Если showOld дает true, то 392px должен вернуть еще 275px должен вернуться. Любая помощь в решении этой проблемы очень ценится.

Благодаря

ответ

4

Если ваш showOld является ko.observable, то вам нужно написать showOld() (потому что ko.observable функция), чтобы получить его значение в вашем выражении:

data-bind="style: {height: showOld() ? '392px' : '275px'}" 

От documentation:

К читайте текущее значение наблюдаемого, просто вызовите наблюдаемый с нет параметров.

К напишите новое значение наблюдаемого, вызовите наблюдаемое и передайте новое значение в качестве параметра. Например, вызов myViewModel.personName('Mary') изменит значение имени на «Mary».

+0

Большое спасибо. Он отлично работал. Silly me – Mujahid

+2

Не волнуйтесь ... независимо от того, как часто вы используете нокаут, вы всегда будете опускать «()» время от времени. Ключ должен знать, чтобы искать его, когда ничего другого не представляется возможным. Использование ссылки ko.debug.js полезно также ... там, где возникает ошибка привязки, вы можете наблюдать за параметром «node» и точно видеть, что/откуда происходит горе в случае привязки inline ko. – beauXjames