Я пытаюсь сделать что-то очень простое — протестировать логическое значение из JSON в шаблоне jsRender.
ДАННЫЕ JSON:
{ ... "CanAdd": false, "CanDelete": false, "CanEdit": true, ... }
Шаблон:
{{if CanEdit === true}} СДЕЛАЙТЕ ЧТО-НИБУДЬ {{/if}}
Сгенерированный вывод не отображает «DO SOMETHING». Значение CanEdit в данных JSON равно true. Я пробовал CanEdit === "true", CanEdit == true, CanEdit == "true" и ничего не работает.
Что мне не хватает?
EDIT Вот мой полный шаблон:
<section class="ManagePageContentSection">
<h2>{{:PageTitle}} Page</h2>
{{for SectionContentList}}
<section class="PageSectionContent">
<h3>
{{:SectionName}} Section
{{if CanEdit === true}}
<span id="editPageSectionButton" class="editButton" title="Edit {{:SectionName}}">edit</span>
{{/if}}
{{if CanDelete === true}}
<span id="deletePageSectionButton" class="deleteButton" title="Delete {{:SectionName}}">delete</span>
{{/if}}
</h3>
{{if PageContentList.length > 0}}
<table class="PageContentTable">
<thead>
<tr>
<th>Order</th>
<th>Title</th>
<th>Subtitle</th>
<th>Summary</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{{for PageContentList}}
<tr id="{{:ContentId}}">
<td>{{:Ordinal}}</td>
<td>{{:Title}}</td>
<td>{{:SubTitle}}</td>
<td>{{:Summary}}</td>
<td>
{{if CanEdit}}
<span id="editPageSectionButton" class="editButton" title="Edit {{:Title}}">edit</span>
{{/if}}
{{if CanDelete}}
<span id="deletePageSectionButton" class="deleteButton" title="Delete {{:Title}}">delete</span>
{{/if}}
</td>
</tr>
{{/for}}
</tbody>
<tfoot>
</tfoot>
</table>
{{/if}}
</section>
{{/for}}
</section>
JSON
{
"AsOfDate": "/Date(1342800529826-0500)/",
"FullPageUrl": "/home/index",
"NavigationId": 7,
"NavigationName": "Home",
"PageContainerName": "ContentRenderedContainer",
"PageId": 2,
"PageName": "Home",
"PageTitle": "Home - Home",
"SectionContentList": [
{ … },
{ … }
],
"AddContentUrl": "",
"AddSectionUrl": "/PageSection/New/2",
"AdminTemplateName": "PageSectionContentTemplate",
"CanAdd": false,
"CanDelete": false,
"CanEdit": true,
"DeletSectioneUrl": "/PageSection/Delete",
"DeleteContentUrl": "",
"EditContentUrl": "",
"EditSectionUrl": "/PageSection/Edit"
}
Шаблон рендерится, за исключением логики вокруг CanEdit, CandDelete.
Я собираюсь отказаться от создания шаблонов и вернуться к рендерингу HTML на сервере. Возможно, то, что я делаю, слишком сложно. Возможно, шаблоны следует использовать только для данных, доступных только для чтения.
Еще раз спасибо за помощь.
{{for SectionContentList}}
и{{for PageContentList}}
, но они не являются объектами ни вSectionContentList
, ни вPageContentList
. @BorisMoore знает лучше меня, но я считаю, что вам нужно использовать#parent.data
для доступа к этим объектам. - person MrOBrian   schedule 24.07.2012