2013-08-23 5 views
0

Выполнение математических выражений в jquery.tmpl для моделей с нокаутом не похоже на работу. Есть ли другой способ сделать это?Математические выражения с нокаутом через значения jquery.tmpl?

http://jsfiddle.net/Z8F8r/

<p data-bind="text: number" /> <-- shows 10 as expected 

<script id="numberTemplate" type="text/html"> 
    ${number} <-- Shows 10 as expected 
    ${number/2} <-- Shows NaN 
</script> 

enter image description here

+0

Ваш jsfiddle не работает. Ссылка на jquery tmpl не является text/javascript. Я попытался использовать microsoft CDN, и нокаут расстроен в версии. – awbergs

+0

@awbergs Выглядит достаточно хорошо в FireFox. Прикрепленный скриншот на всякий случай. – Levitikon

+0

Должно быть, проблема с хромом. Я проверю это в FF – awbergs

ответ

1

Значение number не фактическое значение. Это функция, которая при вызове с аргументами 0 возвращает ожидаемое значение. При оценке экспрессии

${number/2} 

вы эффективно делать то же самое, как

(function(){})/2 

который возвращает NaN

Если изменить выражение, чтобы посмотреть, как это вместо того, чтобы

${number()/2} 

Вы получите ожидаемое значение 5

Вы можете увидеть фактическое содержимое number, если вы eval значение.

${eval(number)} 

возвращает эта функция

function d(){ 
    if(0<arguments.length) 
    { 
     if(!d.equalityComparer||!d.equalityComparer(c,arguments[0])) 
      d.H(), 
      c=arguments[0], 
      d.G(); 
      return this 
    } 

    b.r.Wa(d); 
    return c 
} 
+0

Ты мой любимый человек! Благодаря! – Levitikon

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