Angular - Hammerjs - 在滑动操作中加载html内容

时间:2017-09-05 19:01:39

标签: javascript angular hammer.js

以下滑动操作会在模板中加载三个图像。他们目前工作正常,但我想用功能谷歌地图iframe和一个复选框和名称循环更改两个图像。

我尝试用html替换图片链接并将<img [src]="avatar.content" [alt]="">更改为{{avatar.content}},但模板将html视为纯文本。

我最好的选择是什么?

component.ts

SWIPE_ACTION = { LEFT: 'swipeleft', RIGHT: 'swiperight' };

  avatars = [
    {
      content: 'https://semantic-ui.com/images/avatar2/large/kristy.png',
      visible: true
    },
    {
      content: 'https://semantic-ui.com/images/avatar2/large/matthew.png',
      visible: false
    },
    {
      content: 'http://semantic-ui.com/images/avatar/large/jenny.jpg',
      visible: false
    }
  ];

  // action triggered when user swipes
  swipe(currentIndex: number, action = this.SWIPE_ACTION.RIGHT) {
    // out of range
    if (currentIndex > this.avatars.length || currentIndex < 0) { return };

    let nextIndex = 0;

    // swipe right, next avatar
    if (action === this.SWIPE_ACTION.RIGHT) {
      const isLast = currentIndex === this.avatars.length - 1;
      nextIndex = isLast ? 0 : currentIndex + 1;
    }

    // swipe left, previous avatar
    if (action === this.SWIPE_ACTION.LEFT) {
      const isFirst = currentIndex === 0;
      nextIndex = isFirst ? this.avatars.length - 1 : currentIndex - 1;
    }

    // toggle avatar visibility
    this.avatars.forEach((x, i) => x.visible = (i === nextIndex));
  }

component.html

<div class="swipe-box" *ngFor="let avatar of avatars; let idx=index" (swipeleft)="swipe(idx, $event.type)" (swiperight)="swipe(idx, $event.type)"
    [class.visible]="avatar.visible" [class.hidden]="!avatar.visible">
    <div class="swipe-content">
        <img [src]="avatar.content" [alt]="">
    </div>
</div>

这是复选框循环:

<md-list>
    <md-list-item *ngFor="let guest of event['guests'] | keys">
        <md-icon md-list-icon><img class="event-img" src="http://lorempixel.com/70/70" /></md-icon>
        <h3 md-line> {{ guest.value.first_name }} {{guest.value.last_name}} </h3>
        <p md-line>
        </p>
        <span flex>
            <md-checkbox *ngIf="checkGuest(guest.key) === false" (change)="checkIn(guest.key)"></md-checkbox>
            <md-checkbox *ngIf="checkGuest(guest.key) === true" (change)="checkOut(guest.key)" [checked]="true === true"></md-checkbox>
        </span>
    </md-list-item>
</md-list>

2 个答案:

答案 0 :(得分:1)

不确定困难在哪里。你有一个索引可以跟踪你的位置以及你想要展示的几件事。只需使用一些跟踪该索引的条件,并根据该索引显示不同的模板/ html块/指令。

modified_str

在您的示例中,该模板逻辑将位于“.swipe-content”div下。您可能需要稍微修改一下打字稿代码,以便将currentIndex定义/跟踪为组件模板可用的变量(如果不是这样的话)(看起来它只是传递给函数)。

答案 1 :(得分:0)

试试这个图书馆https://www.npmjs.com/package/ngx-carousel。它具有您需要的所有功能,并且易于使用