我得到的第一个错误是当我尝试移动鼠标进行选择时,比如说服务器端的 8 个文件中的 5 个。全部被选中,并且鼠标向右上方抛出边界。
将多个文件复制到服务器时出现第二个错误。最大的之一,始终没有从第一次复制。仅从第 2 次开始,在重新启动filezilla之后。你如何避免这些错误?也许需要一些设置?
我得到的第一个错误是当我尝试移动鼠标进行选择时,比如说服务器端的 8 个文件中的 5 个。全部被选中,并且鼠标向右上方抛出边界。
将多个文件复制到服务器时出现第二个错误。最大的之一,始终没有从第一次复制。仅从第 2 次开始,在重新启动filezilla之后。你如何避免这些错误?也许需要一些设置?
Angular 7. 购物清单应用程序。带有用于排序的产品 div 和颜色按钮的列。例如,“土豆”和“洋葱”可以涂成相同的颜色,这样在使用时会并排放置。还有一个十字 - “购买”的标志。元素重新排列
css / diplay:flex / order:[вычисляемое].
生成的元素*ngFor
订单更改为[ngStyle]
一切正常。但是,当您单击排序时,元素立即消失的位置对用户来说并不明显。我决定在排序之前先计算好方向,然后{margin-top: -70px; }在50ms.
并且当前位置的替换应该推迟100ms。事件}点击子元素shop.component.html
传送到shop.component.ts
变成一个函数 d(elem: any, sort: number)
(自元素和新的排序号)
计算完方向后,元素被赋予了新的样式{margin-top: -70px;}
然后产生一个事件:“排序按钮被按下”,
传递给父组件app.component.ts,
从那里到
data.service.ts
并告诉模型对象新值{order:[]}
事件的到达速度超过 50 毫秒,这会导致即时重建,然后元素在新位置执行一点点舞蹈。这不是我想要的。如果您将事件的启动包装在一个计时器 EVEN ZERO 中:
setTimeout(function() {
this.ColorBtnClicked.emit(elem);
}, 0 );
该事件根本不会发出。现在,该元素的行为应如此:它以正确的方向模拟飞行的开始并重建,但它没有获得正确的颜色并且没有收到像 1)2) ... -8) 之类的前缀(这是data.service.ts的任务)。如果您删除超时,那么事件会立即完成它的工作(绘制 div 并放置前缀),然后元素会在一个新的地方跳舞,它在屏幕外是不可见的。
我将尝试以简洁的方式放置代码:
shop.component.html
<div id="shopping" style="display: block;">
<ul id="listingUL">
<li *ngIf="!isFirst" class="item" [ngClass] = "{itemCrossedOut: item.done}" [ngStyle] ="{backgroundColor: 'var(--color' + ('' + item.order) + ')'}">
<div class="main">
<span class="itm">{{item.content}}</span>
<button (click)="d(item, 9)" class="ok">X</button>
</div>
<div class="orderDiv">
<button (click)="d(item, 1)" class="orderBtn d1">1</button>
<button (click)="d(item, 2)" class="orderBtn d2">2</button>
<button (click)="d(item, 3)" class="orderBtn d3">3</button>
<button (click)="d(item, 4)" class="orderBtn d4">4</button>
<button (click)="d(item, 5)" class="orderBtn d5">5</button>
<button (click)="d(item, 6)" class="orderBtn d6">6</button>
<button (click)="d(item, 7)" class="orderBtn d7">7</button>
<button (click)="d(item, 8)" class="orderBtn d8">8</button>
</div>
</li>
</div>
</ul>
</div>
shop.component.ts
import {
Component,
Input,
EventEmitter,
Output,
OnInit
} from '@angular/core';
import {Item} from '../item';
@Component({
selector: 'app-shop-comp',
templateUrl: './shop.component.html',
styleUrls: ['./shop.component.css']
})
export class ShopComponent{
@Input() shopData: Item[];
@Output() ColorBtnClicked = new EventEmitter<any>();
d(elem: any, sort: number) {
let newDone;
let dir: number; // направление
// здесь вычисляем новое направление
if (dir > 0) {elem.direction = '70px 0px -70px 0px';}
else if (dir < 0) {elem.direction = '-70px 0px 70px 0px';}
// setTimeout(function() {
elem.done = newDone;
if (sort !== 9) {elem.order = sort; }
this.ColorBtnClicked.emit(elem);
// }, 100 );
setTimeout(function() {
elem.direction = '0px 0px 0px 0px';
}, 200 );
}
}
app.component.ts
import {Component, OnInit} from '@angular/core';
import {DataService} from './data.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
providers: [DataService]
})
export class AppComponent implements OnInit {
constructor(private dataService: DataService) {}
title = 'Shop-Reminder-App';
activeScreen = 'inp';
// activeAdv = 'slp';
listing = '';
shopData = [];
onClickScreenBtn(screen) {
this.activeScreen = screen;
}
onlistingAreaChanged(listing) { // слушаем событие изменился listing и отправляем текст в DataService
this.shopData = this.dataService.rebuildData(listing);
}
ColorBtnClicked() { // слушаем нажатие на цвето-сортировку
this.listing = this.dataService.rebuildText();
}
setOldText(obj: any) {
let text = '';
for (let i = 0; i < obj.length; i++) {
text = text + obj[i].content + ',';
}
this.shopData = this.dataService.rebuildData(text);
}
ngOnInit() {
this.setOldText(this.shopData);
}
}
数据服务.ts
import {Item} from './item';
export class DataService {
private data: Item[] = [];
// getData(): Item[] {
// return this.data;
// }
rebuildData(text) {
this.data = [];
// присваиваем прорядок согласно номеру 1)-8), если он есть
return this.data;
}
rebuildText() {
//Заглавие, номера 1)2)3)4)5)6)7)8) done(х)
let text = '';
// после нажатия на сортировку модифицируем список:
//Заглавие, номера 1)2)3)4)5)6)7)8) done(х)
return text;
}
}
项目.ts
export class Item {
constructor(
public order: number,
public content: string,
public done: boolean,
public direction: string,
) {}
}
问题:我在NSC + JS上创建了一个页面,而我只是在做外观。它有一个简单的购物清单。在启动时(电话垂直),一切都会显示出来。倾斜后(手机是水平的)一切都消失了。反之亦然,在启动时(手机是水平的)一切都会显示出来。转动(电话垂直)后,一切都消失了。告诉我这里有什么魔力,需要改变什么?访问https://play.nativescript.org/?template=play-js&id=yag2eN&v=5
首先,非常感谢您。现在有2个问题第一个关于结构的问题。我是新来的。我阅读了有关模块、组件、服务的内容,但我仍然不完全理解这些实体中的每一个中哪些任务是固有的,哪些是外来的。我将特别感谢这种形式的回答:这些是模块的任务,但这些是模块不可能的,最好将其委托给组件。等等。是否可以让一项服务完成向不同服务器发出两个请求的任务,还是我需要编写两项服务?为什么?
第二个问题是实用的。我正在编写一个查询天气 API 的课程。用户输入cityName。我将第一个请求发送到 json 文件所在的服务器,我即时发送名称,我得到名称中具有相同字母的城市列表。我正在为用户制作一个实时下拉工具提示。
例如:你输入了 kongo,出现一个提示:
0: "{"id":202239,"name":"Gikongoro, RW"}"
1: "{"id":1064234,"name":"Ikongo, MG"}"
2: "{"id":212360,"name":"Kongolo, CD"}"
3: "{"id":2359142,"name":"Kongoussi, BF"}"
然后在用户点击所选城市后。我将它的 id 发送到天气服务器。我从 API 获取 json 天气。我画出答案天气预报。
问题:在这个应用程序的最佳结构中应该有多少和哪些模块,哪些组件和服务应该有什么任务?我提前发誓。