【问题标题】:jsRender how to do a boolean comparisonjsRender如何进行布尔比较
【发布时间】:2012-07-20 15:22:59
【问题描述】:

我正在尝试做一些非常简单的事情 - 在 jsRender 模板中测试来自 JSON 的布尔值。

JSON 数据:

{ ... “可以添加”:假, “可以删除”:假, “可以编辑”:是的, ... }

模板:

{{如果 CanEdit === true}} 做一点事 {{/if}}

生成的输出不显示“做某事”。 JSON 数据中 CanEdit 的值为 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 对象和模板可能会有所帮助。
  • 为我工作。你也可以写 {{if canEdit}} ... {{/if}} - 这将测试'truey'。另见samplesample 2。如果它不适合您,您可以将代码的简化版本发布到 jsfiddle 并从此处链接到它。
  • 您正试图从{{for SectionContentList}}{{for PageContentList}} 中访问“CanEdit”和“CanDelete”,但它们不是SectionContentListPageContentList 中的对象。 @BorisMoore 会比我更了解,但我相信您需要使用 #parent.data 来访问这些对象

标签: json templates boolean jsrender


【解决方案1】:
{{if variable}} do something {{/if}}

如果“变量”的计算结果为真,将显示“做某事”。

它不会显示“变量”是否为空或计算结果为假。

使用!variable 来检查是否为假。

【讨论】:

    猜你喜欢
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 2012-08-19
    相关资源
    最近更新 更多