JQuery tmpl не работает должным образом в моем блоке if - PullRequest
0 голосов
/ 28 января 2011

Я пытаюсь запросить строковое значение с помощью JQuery.tmpl () из блока {{if}}, и по какой-то причине это не работает.

Я использую KnockoutJS для рендеринга панели инструментов с различными типами панелей.Каждая панель имеет свойство Type, которое сообщит мне, какой это тип панели.Итак, вот (очень простая) концепция того, как мои данные могут выглядеть:

var data = {"Panels": [
  {"Type": "A", ... },
  {"Type": "B", ... },
  {"Type": "C", ... },
]};

Вот шаблон, который будет отображать различные теги div в зависимости от Type:

<script id="template" type="text/x-jquery-tmpl">
   {{if Type == "A"}}
     <div>A</div>

   {{else Type == "B"}}
     <div>B</div>

   {{else Type == "C"}}
     <div>C</div>

   {{else}}
     <div>'${Type}' is invalid!</div>

   {{/if}}
</script>

Однако, я всегда получаю вывод, подобный этому:

<div>'A' is invalid!</div>
<div>'B' is invalid!</div>
<div>'C' is invalid!</div>

Как я могу проверить строковое свойство (то есть. Type), используя блок {{if ..}}?

Заранее спасибо!

1 Ответ

0 голосов
/ 29 января 2011

Вот рабочая копия вашего образца в JSFiddle:
http://jsfiddle.net/rniemeyer/cnzeg/

Есть ли что-то отличное в моем образце от того, что вы пытаетесь?

Единственное, что может вызвать проблемы в IE, это запятая в массиве Panels здесь:

var data = {"Panels": [
  {"Type": "A", ... },
  {"Type": "B", ... },
  {"Type": "C", ... }*,*
]};

Не вызовет проблемы, с которой вы сталкиваетесь, и которая, вероятно, отсутствует в вашем реальном коде.

...