zoukankan      html  css  js  c++  java
  • (五)Knockout template模版渲染

    基础

    template绑定通过模板将数据render到页面。模板绑定对于构建嵌套结构的页面非常方便。默认情况, Knockout用的是流行的jquery.tmpl模板引擎。使用它的话,需要在安装页面下载和引用jquery.tmpl和jQuery框架。或者你也可以集成其它的模板引擎(虽然需要了解Knockout 内部知识才行)。

    参数

    主参数

    • 语法快速记忆:如果你声明的仅仅是字符串(上个例子),KO会使用模板的ID来render。应用在模板上的数据是你的整个view model对象(例如ko.applyBindings 绑定的对象)。

    • 更多控件,你可以传带有如下属性的JavaScript对象:

      • name(必选项) — 需要render的模板ID – 参考 注5 如何使用function函数声明ID。

      • data(可选项) — 需要render到模板的数据。如果你忽略整个参数,KO将查找foreach参数,或者是应用整个view model对象。

      • foreach(可选项) — 指定KO按照“foreach”模式render模板 – 参考 注3

      • afterAdd或beforeRemove(可选项) — 在foreach模式下使用callback函数。

      • templateOptions(可选项) — 在render模板的时候,传递额外数据以便使用。参考 注6。

    1.绘制一个命名模板

    通常, 当您使用控制流绑定 (foreach, with, if 等) 时, 不需要为模板命名: 它们是由 dom 元素中的标记以隐式和匿名方式定义的。但是, 如果需要, 可以将模板分解为一个单独的元素, 然后按名称引用它们:

       <h2>Participants</h2>
        Here are the participants:
        <div data-bind="template: { name: 'person-template', data: buyer }"></div>
        <div data-bind="template: { name: 'person-template', data: seller }"></div>
         
        <script type="text/html" id="person-template">
            <h3 data-bind="text: name"></h3>
            <p>Credits: <span data-bind="text: credits"></span></p>
        </script>
         
        <script type="text/javascript">
             function MyViewModel() {
                 this.buyer = { name: 'Franklin', credits: 250 };
                 this.seller = { name: 'Mario', credits: 5800 };
             }
             ko.applyBindings(new MyViewModel());
        </script>
    



    在该示例中 ,person-template标记被使用两次 : 一次用于buyer一次 , 和seller。注意 , 模板标记包裹在<script type="text/html">— —type="text/html"属性是必需的, 以确保标记不会以 javascript 的形式执行, 并且出于将绑定应用于该标记, 除非它用作模板。

    2. 使用foreach

    如果需要为集合里的每一个item render一次模板:

    <h2>Participants</h2>
    Here are the participants:
    <div data-bind="template: { name: 'person-template', foreach: people }"></div>
    
    <script type="text/html" id="person-template">
        <h3 data-bind="text: name"></h3>
        <p>Credits: <span data-bind="text: credits"></span></p>
    </script>
    
    <script>
      function MyViewModel() {
        this.people = [
          { name: 'Franklin', credits: 250 },
          { name: 'Mario', credits: 5800 }
        ]
      }
      ko.applyBindings(new MyViewModel());
    </script>
    

    使用foreach,这提供了与直接在每个元素中嵌入匿名模板相同的结果, 即:

    <div data-bind="foreach: people">
        <h3 data-bind="text: name"></h3>
        <p>Credits: <span data-bind="text: credits"></span></p>
    </div>
    
  • 相关阅读:
    第一个Servlet项目(IDEA)
    Web交互基本流程以及HTTP协议详解
    mybatis中Mapper.xml配置详解
    认识mybatis
    SpringAOP
    Spring AOP
    70. Climbing Stairs
    位运算
    Leetcode分类
    21. Merge Two Sorted Lists
  • 原文地址:https://www.cnblogs.com/tangge/p/10328910.html
Copyright © 2011-2022 走看看