Angular2上的Interact.js与DefinitelyTyped
发布时间:2020-12-17 17:07:01 所属栏目:安全 来源:网络整理
导读:我在我的项目中安装了interact.js angular2,但我不知道如何使用文档中描述的方法. 我的导入如下 import * as _ from 'interact'; Angular2中是否有可能提供全面服务interact.js?如何创建拖放支持? DT https://github.com/DefinitelyTyped/DefinitelyTyped/
我在我的项目中安装了interact.js angular2,但我不知道如何使用文档中描述的方法.
我的导入如下 import * as _ from 'interact'; Angular2中是否有可能提供全面服务interact.js?如何创建拖放支持? DT https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/interact.js 解决方法
我使用
Renderer2来选择你想要玩的元素,你也可以按原样传递类名,其余的用法与其他的typescript类非常相似.让我们说第一个interactjs的例子,把这个html块放到你的组件模板中
<div id="drag-1" class="draggable"> <p> You can drag one element </p> </div> <div id="drag-2" class="draggable"> <p> with each pointer </p> </div> 在你的组件内部 import { Component,OnInit,Renderer2 } from '@angular/core'; import * as interact from 'interactjs'; @Component({ selector: 'app-playground',templateUrl: './playground.component.html',styleUrls: ['./playground.component.css'] }) export class PlaygroundComponent implements OnInit { constructor(private renderer2: Renderer2) { } ngOnInit() { const draggableEl = this.renderer2.selectRootElement('.draggable'); // target elements with the "draggable" class interact(draggableEl) .draggable({ // enable inertial throwing inertia: true,// keep the element within the area of it's parent restrict: { restriction: 'parent',endOnly: true,elementRect: { top: 0,left: 0,bottom: 1,right: 1 } },// enable autoScroll autoScroll: true,// call this function on every dragmove event onmove: this.dragMoveListener,// call this function on every dragend event onend: function (event) { const textEl = event.target.querySelector('p'); textEl && (textEl.textContent = 'moved a distance of ' + (Math.sqrt(Math.pow(event.pageX - event.x0,2) + Math.pow(event.pageY - event.y0,2) | 0)) .toFixed(2) + 'px'); } }); } private dragMoveListener(event) { const target = event.target,// keep the dragged position in the data-x/data-y attributes x = (parseFloat(target.getAttribute('data-x')) || 0) + event.dx,y = (parseFloat(target.getAttribute('data-y')) || 0) + event.dy; // translate the element target.style.webkitTransform = target.style.transform = 'translate(' + x + 'px,' + y + 'px)'; // update the posiion attributes target.setAttribute('data-x',x); target.setAttribute('data-y',y); } } 我认为我们不需要任何其他服务层来使用它! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |