1
我想要做一件非常簡單的事情 - 在JsRender模板中測試一個來自JSON的布爾值。jsRender如何做布爾比較
JSON數據:
{ ... 「CanAdd」:假的, 「CanDelete」:假的, 「CanEdit」:真實, ... }
Template:
{{if if CanEdit === true}} 做什麼 {{/ if}}
生成的輸出不顯示「DO SOMETHING」。 CanEdit在JSON數據中的值爲true。我嘗試過CanEdit ===「true」,CanEdit == true,CanEdit ==「true」,沒有任何作用。
我在想什麼?
編輯 這裏是我完整的模板:
<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。也許我所做的事情太複雜了。也許模板應該只用於只讀數據。
再次感謝您的幫助。
據我所知,根據我自己的經驗和演示,我已經看到,你做的是正確的。我假設你所展示的只是實際模板的一部分,模板的其餘部分是否呈現?你有任何錯誤?有時候,像一個雜散空間這樣簡單的事情可能會導致模板中斷,因此發佈完整的實際JSON對象和模板可能會有所幫助。 – MrOBrian 2012-07-20 16:13:32
適合我。你也可以寫{{if canEdit}} ... {{/ if}} - 這將測試'truey'。另見[示例](http:// localhost:60288/jsrender/demos/step-by-step/04_if-else-tag.html)和[示例2](http://borismoore.github.com/jsrender/演示/一步一步/ 10_comparison-tests.html)。 如果你的代碼不適合你,你可以將你的代碼的簡化版本發佈到jsfiddle並從這裏鏈接到它。 – BorisMoore 2012-07-20 20:05:59
您正在嘗試從{{{for SectionContentList}}和{{for PageContentList}}中訪問「CanEdit」和「CanDelete」,但它們不是「SectionContentList」或「PageContentList」中的對象。 @BorisMoore比我更清楚,但我相信你需要使用'#parent.data'來訪問這些對象 – MrOBrian 2012-07-23 22:54:06