2012-07-20 88 views
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。也許我所做的事情太複雜了。也許模板應該只用於只讀數據。

再次感謝您的幫助。

+0

據我所知,根據我自己的經驗和演示,我已經看到,你做的是正確的。我假設你所展示的只是實際模板的一部分,模板的其餘部分是否呈現?你有任何錯誤?有時候,像一個雜散空間這樣簡單的事情可能會導致模板中斷,因此發佈完整的實際JSON對象和模板可能會有所幫助。 – MrOBrian 2012-07-20 16:13:32

+2

適合我。你也可以寫{{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

+0

您正在嘗試從{{{for SectionContentList}}和{{for PageContentList}}中訪問「CanEdit」和「CanDelete」,但它們不是「SectionContentList」或「PageContentList」中的對象。 @BorisMoore比我更清楚,但我相信你需要使用'#parent.data'來訪問這些對象 – MrOBrian 2012-07-23 22:54:06

回答

0
{{if variable}} do something {{/if}} 

如果「變量」計算結果爲真,將顯示「執行某些操作」。

如果「變量」爲空或計算結果爲false,則不會顯示。

使用!variable檢查是否爲false。