2011-01-28 3 views
0

Я пытаюсь допросить строковое значение с помощью JQuery.tmpl() из блока {{if}}, и он почему-то не работает.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 ..}} блок?

Заранее благодарен!

ответ

0

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

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

только другая вещь, которая может вызвать проблемы в IE является Запятая в массиве Panels здесь:

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

Не будет причиной проблемы, что вы видите, хотя и, вероятно, не в Вашем коде ,

+0

Благодарим вас за это. Я обновил решение, чтобы показать проблему, которая, как я думаю, у меня есть: http://jsfiddle.net/TrailHacker/cnzeg/2/ – Luc

+0

Я просто хотел обновить другим комментарием, заявив, что принимаю это как свой ответ, и нужно еще больше изучить мою проблему. Вы доказали мне, что моя проблема - это что-то еще в моем коде. :) Еще раз спасибо!! – Luc

+1

Посмотрите на это: http://jsfiddle.net/rniemeyer/zRqrw/. Похоже, что путь к плагину отображения не был правильным на вашей скрипке, поэтому я обновил его. Основное изменение тогда состояло в том, что после прохождения через плагин отображения все, что можно наблюдать, поэтому вам нужно ссылаться на Type как функцию в вашем коде типа Type(). Надеюсь это поможет. –

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