zoukankan      html  css  js  c++  java
  • 3.7 Templates -- Links

    一、The {{link-to}} Helper

    1. 使用{{link-to}}创建一个指向route的链接:

    app/router.js

    Router.map(function() {
      this.route("photos", function(){
        this.route("edit", { path: "/:photo_id" });
      });
    });

    app/templates/photos.hbs

    <ul>
      {{#each photos as |photo|}}
        <li>{{#link-to 'photos.edit' photo}}{{photo.title}}{{/link-to}}</li>
      {{/each}}
    </ul>

    如果photos templatemodel是一个三张照片的集合,HTML:

    <ul>
      <li><a href="/photos/1">Happy Kittens</a></li>
      <li><a href="/photos/2">Puppy Running</a></li>
      <li><a href="/photos/3">Mountain Landscape</a></li>
    </ul>

    2. {{link-to}}有一个或者两个参数:

    • 路由的名字。在例子中,就是index, photos或者photos.edit
    • 动态段dynamic segment的大多数模型,默认的,Ember将会使用相应对象的id属性的值替换每个段。在上面的例子中,第二个参数就是每个photo对象,id属性被用来填充对应字段,无论是1,2,3。如果没有model被传递给helper,你可以提供明确的值来代替。
    • app/templates/photo.hbs
    • {{#link-to 'photos.photo.edit' 1}}
        First Photo Ever
      {{/link-to}}
    • 当被渲染的链接匹配当前路由,并且同一个对象实例被传递到helper,然后这个link会添加class="active"属性。例如,如果URL是/photos/2,上面第一个例子会被渲染为:
    • <ul>
        <li><a href="/photos/1">Happy Kittens</a></li>
        <li><a href="/photos/2" class="active">Puppy Running</a></li>
        <li><a href="/photos/3">Mountain Landscape</a></li>
      </ul>  

    二、Example for Multiple Segments

    如果路由是嵌套的,你可以为每一个动态字段提供一个模型或者一个标识符。

    app/router.js

    Router.map(function() {
      this.route("photos", function(){
        this.route("photo", { path: "/:photo_id" }, function(){
          this.route("comments");
          this.route("comment", { path: "/comments/:comment_id" });
        });
      });
    });

    app/templates/photo/index.hbs

    <div class="photo">
      {{body}}
    </div>
    
    <p>{{#link-to 'photos.photo.comment' primaryComment}}Main Comment{{/link-to}}</p>

    如果你仅仅指定一个模型,它将代表最内层的动态段:comment_id:photo_id字段会使用当前的photo。

    可选择的,你可以传递一个photoid和一个comment

    app/templates/photo/index.hbs

    <p>
      {{#link-to 'photo.comment' 5 primaryComment}}
        Main Comment for the Next Photo
      {{/link-to}}
    </p>
    • 在上面例子中,PhotoRoutemodel hook将会使用params.photo_id=5运行。CommentRoutemodel hook不会运行直到你为comment字段提供一个对象。commentid将会根据CommentRoute的 序列化钩子方法填充URL。

    三、Using link-to as An Inline Helper

    除了作为一个块表达式之外,通过指定链接文本作为helper的第一个参数,link-to helper也可以在inline form中被使用:

    A link in {{#link-to 'index'}}Block Expression Form{{/link-to}},
    and a link in {{link-to 'Inline Form' 'index'}}.

    输出:

    A link in <a href='/'>Block Expression Form</a>,
    and a link in <a href='/'>Inline Form</a>.

    四、Adding Additional Attributes on A Link

    当生成一个链接时你可能希望设置为它额外的属性。你可以使用额外的参数这样做:

    <p>
      {{link-to 'Edit this photo' 'photo.edit' photo class="btn btn-primary"}}
    </p>

    许多通用的HTML属性你都可以使用例如class。当添加类名时,Ember还将应用标准的ember-view和可能的active类名。

    五、Replacing History Entries

    当在路由之间跳转时,link-to默认的形式是在浏览器的历史中增加条目。然而,在浏览器历史记录中你可以使用replace=true替换当前条目。

    <p>
      {{#link-to 'photo.comment' 5 primaryComment replace=true}}
        Main Comment for the Next Photo
      {{/link-to}}
    </p>
  • 相关阅读:
    使用RazorGenerator对视图View进行单元测试
    C#常用获取本周、本月、本季度、本年的时间起止段代码
    Redis使用记录
    Git和ConEmu
    mongodb单索引的升序和降序
    AES 加密解密 php c#
    redis 外网连接错误
    .net mvc 分页
    检查Windows上安装的.net版本
    sqlserver跨服务器查询
  • 原文地址:https://www.cnblogs.com/sunshineground/p/5153011.html
Copyright © 2011-2022 走看看