我目前正在使用文本输入来过滤项目列表.我想在设置特定变量时这样做,无论文本输入是什么,列表都不会过滤.关于如何实现这一目标的任何建议?
<a ng-repeat="set in data | filter: { value: search }" data-id="{{set.id}}" ng-mousedown="setBox(set)" ng-mouseover="setSelected(set, $event)" ng-bind-html="set.value | trustHTML"></a>
Run Code Online (Sandbox Code Playgroud) 我猜这两个属性实际上并没有合作,但我的情况是:
我正在尝试创建一个工具提示组件.我的工具提示绝对定位,因为我不知道内容的长度是多少,没有宽度.因此,与宽度相关的CSS,文本只是形成一个高,瘦的列.我试过了max-width,但就它本身而言,它什么也没做.所以我决定尝试white-space: nowrap,虽然它很好地不包装文本,但它似乎也没有以有用的方式遵循最大宽度,而文本反而超出了元素的边界.
如果有一个干净的解决方案,我想不出如何解决我的问题.我希望有一个绝对定位的div扩展到适合它的内容,直到最大值,此时它包装.我看到的一个建议是将元素设置为弹性框,但据我所知,这对于IE来说不是很好,所以我认为在我的情况下是不可行的.有什么建议?
.wrapper {
position: relative;
display: inline;
}
.info {
position: absolute;
bottom: 1.2em;
left: 0;
}Run Code Online (Sandbox Code Playgroud)
<div class="wrapper">
<span>[ ? ]</span>
<div class="info">Any long text can go in here to test what goes wrong with wrapping.</div>
</div>Run Code Online (Sandbox Code Playgroud)
我在Angular 2中构建了一个加载微调器组件,该组件要在发出HTTP请求之前触发,并在完成时禁用。问题在于,每次用户更改输入(复选框的选中,在输入框中键入内容)时,都会触发http请求。这意味着很多请求,并且覆盖层不断增加。我想在触发输入后等待一段时间(半秒?),然后再触发http请求,让用户有时间输入其他输入。我已经阅读了一些有关反跳的内容,但据我所知,这是在等待另一个请求之前的时间吗?据我所知,这只是两次请求之间的缓冲时间。
基本上,现在,我有一个处理输入的组件。更改输入时(现在是复选框),将触发以下代码:
@Output() filtersChanged = new EventEmitter();
emitFilters(): void {
this.filtersChanged.emit(this.filters);
}
Run Code Online (Sandbox Code Playgroud)
通过中介步骤,这会触发我的http请求:
getEvents(filters): Observable<Event[]> {
this.loadingSpinnerService.showLoadingSpinner();
let params: URLSearchParams = new URLSearchParams();
params.set('types', filters.types.join(','));
params.set('dates', filters.dates.join(','));
return this.http
.get('//api.dexcon.local/getEvents.php', { search: params })
.map((response: Response) => {
return response.json().events;
});
}
Run Code Online (Sandbox Code Playgroud)
在Angular 1中,我将其设置为一个超时,该超时在每次用户影响输入时都会刷新,因此它会在触摸最终输入后触发设置的时间。这也是在Angular 2中做到这一点的最佳方法吗?根据我的阅读,去抖动将请求锁定在与第二个请求过于接近的位置,但是我想知道如何在给定的时间段内采取措施后最好地防止请求发生。
我正在创建一个无头 API,它将驱动 Angular 前端。不过,我在弄清楚应该如何处理用户身份验证时遇到了一些麻烦。
显然 API 应该在 SSL 上运行,但出现的问题是我应该如何发送包含用户密码的请求:通过 GET 或 POST。这是一个 RESTFUL API,所以我正在做的是检索信息,这意味着它应该得到一个 GET 请求。但是通过 get 发送密码意味着它是 URI 的一部分,对吗?我知道即使是 GET 请求也是通过 HTTPS 加密的,但这仍然是正确的方法吗?或者这是从 RESTFUL 中断并在正文中包含数据或其他内容的情况(GET 请求可以在正文中包含数据吗?)。
我试图找出相同的函数是否挂钩到多个动作,我可以找出哪个动作调用它吗?
我想在创建和删除用户时发出API调用; 两种情况下的功能都是相同的,只是一个数据点根据创建或删除的不同而不同.只用一个区别制作两个相同的功能感觉不对,但我不确定我还能做到这一点.
建议吗?
我的数据库出现“非法混合排序规则”错误,所以我想我应该继续将我的数据库和所有表设置为 UTF-8。
我找到了有关如何执行此操作的命令 (),但出现以下错误:
1 - Can't create/write to file './databasename/db.opt' (Errcode: 2)
Run Code Online (Sandbox Code Playgroud)
然后我发现这有帮助:MySQL Error 1 (HY000) Trouble creation file Errcode 2但该解决方案不起作用。我仍然遇到同样的错误。
除了删除数据库并恢复它之外,我不知道该怎么做,但这似乎是一个极端的解决方案。我也在努力弄清楚如何更改数据库中的所有表,再次缺少转储和恢复。
有没有人对我如何修复这个错误有建议?删除数据库是我唯一的选择吗?是否有一些我不知道的许可?
是否可以将debounceTime值设置为根据条件更改的内容?我有一个行为主题设置如此(请告诉我,如果我甚至做这个部分错了):
this.searchSubject.asObservable().debounceTime(1000).subscribe(x => this.emitFilters())
Run Code Online (Sandbox Code Playgroud)
我希望基于某些过滤条件的去抖时间不同,但当我尝试在那里抛出一个函数时,VS Code会抱怨它无效.
我还看了debounce,它似乎采用了一种变量,但是从文档中,我似乎无法弄清楚(我投入的函数根据VS Code返回了错误的类型,即使我复制了来自文件代码).如果它有所作为,我正在Angular 2中做这一切.
我正在尝试设置一个可观察的流,我将最近的设置值与最后一个设置值进行比较,我想根据两者之间的一些变化进行过滤.我在服务中设置了一个BehaviorSubject(Angular 2,如果这很重要)并创建了函数来返回它:
getFilters() {
return this.filtersSubject.asObservable();
}
Run Code Online (Sandbox Code Playgroud)
然后在使用它的组件中,我正在尝试这个:
this.eventFilterService.getFilters()
.takeLast(2)
.subscribe((data) => console.log(data));
Run Code Online (Sandbox Code Playgroud)
但我没有控制台日志.如果我删除了takeLast,我看到我的数据返回.从文档中,我的假设将是原样,它只会发射两次.我的目标是将其takeLast转换为减少然后过滤器.
我使用takeLast错了吗?
据我了解,Input组件中的字段应该是单向的(父级到子级)。但是,我有一个值传递给 an Input,然后在组件中修改它,但我注意到它在父级中也发生了变化。这对我来说是有道理的,因为对象是通过引用传递的,但我猜这意味着 Angular 设置的整个“单向绑定”只是一种范例,而不是严格的?Angular 在幕后没有做任何事情来强制执行单向绑定?
基本上,我正在做:
<session-form [values]="session"></session-form>
Run Code Online (Sandbox Code Playgroud)
在session-form组件中,我session.start从 unixtimestamp 更改为 Moment 对象。但我随后注意到在父级中,session.start也是一个 Moment 对象。
是否有使用这样的数据的范例?一旦设置,我是否应该将输入值复制到严格限制在组件范围内的变量中?
我试图了解反应式编程和可观察性,但当然没有成功.我有以下代码:
this.searchSubscription = this.filtersSubject
.takeLast(2)
.reduce((acc, cur) => {
console.log(acc);
acc.push(cur);
return acc;
}, [])
.debounceTime(1000)
.subscribe(x => this.emitFilters());
Run Code Online (Sandbox Code Playgroud)
我想使用takeLast(2)管道,reduce所以我可以把它变成两个值的数组,并且过滤器是两者之间的某些值是不同的.我一直在浏览文档reduce,甚至传递种子,但VS Code告诉我,Property 'push' does not exist on type 'Object'.但是console.log节目acc是一个数组.我对正在发生的事情以及如何解决这个问题感到困惑.当然,我可能完全错误地解决了这个问题,这使得可观察的内容难以理解.
我无法理解应该如何使用jtiJWT 中的声明。据我在其他SO问题和在线文档中看到的,我们的想法是它们应该是唯一的,但独特的范围是什么?每个站点/应用程序一个 jti?每个令牌/用户一个 jti?如果我有一个特定于用户的 jti,那么这是否会消除 JWT 无状态的意义,因为我需要以某种方式跟踪令牌?
我很想获得一些帮助来了解如何使用 jti,或者如果我根本不需要它。
我已经创建了我的第一个 Composer 包,它具有 MySQL 和 MongoDB 的功能,但是,它不需要两者兼而有之。我意识到有人可能只想将该包与两个数据库之一一起使用,目前我有:
"require": {
"mongodb/mongodb": "^1.2",
}
Run Code Online (Sandbox Code Playgroud)
我想弄清楚,有没有办法使包成为可选的,如果存在,可以自动加载某些文件?或者我最好在代码中做一些事情,例如:
if (class_exists('PDO')) {
// Load MySQL code
}
if (class_exists('MongoClient')) {
// Load MongoDB code
}
Run Code Online (Sandbox Code Playgroud)
还有其他我想不到的解决方案吗?
我进口forkJoin的
import 'rxjs/add/observable/forkJoin';
Run Code Online (Sandbox Code Playgroud)
但我的控制台中仍然出现错误:
__WEBPACK_IMPORTED_MODULE_2_rxjs_Observable__.a.forkJoin is not a function
Run Code Online (Sandbox Code Playgroud)
我没有在Angular CLI编译器中使用此错误(使用ng serve),VS代码也没有抱怨.现在有不同的运行forkJoin的方法吗?我正在使用RxJS 5.5.*运行最新版本的Angular(5.*).
根据要求,它被称为:
Observable.forkJoin(
this.eventService.getTypes().first(),
this.eventService.getDates().first()
).pipe(
Run Code Online (Sandbox Code Playgroud)