小编mar*_*den的帖子

Angular 2 检查下一条路线 OnDestroy

我正在尝试对任何NavigationEnd路由器事件触发操作,除非在 a) 子路由之间导航;b) 在另一条特定路线上。

这是我的一部分app.routing.ts

// some other routes setup...

{ path: 'scrapers/:version', component: SingleScraperComponent, children: [
    { path: '', redirectTo: 'statistics', pathMatch: 'full' },
    { path: 'statistics', component: ScraperStatisticComponent },
    { path: 'targets', component: ScraperTargetsComponent },
]},

// some other routes setup...
Run Code Online (Sandbox Code Playgroud)

这是我的Router活动订阅SingleScraperComponent

// some component code

ngOnInit(): void {
    this._router.events.filter(event => event instanceof NavigationEnd).takeWhile(() => this.isAlive).subscribe(
        (event: NavigationEnd) => {
            console.log(event);
            if (event.url.indexOf('site-preview') === -1) {
               this._site.resetQuery();
            }
        }
    ); …
Run Code Online (Sandbox Code Playgroud)

javascript typescript angular

7
推荐指数
1
解决办法
2838
查看次数

Angular 4 input[type='number'] 防止输入超过 min/max

我正在尝试制定一个inputNumber指令来防止输入(当值错误时不突出显示输入,但即使输入错误值):

a) 字母和符号,仅限于 [0-9] b) 尊重minmax参数 c) 通过greaterOrEqual/lessOrEqual属性与视图中的其他此类指令相关。

这是我的input-number.directive.ts

import {Directive, HostListener, Input} from '@angular/core';

@Directive({
    selector: '[inputNumber]'
})
export class InputNumberDirective {

    @Input() min: number = 0; // will be input
    @Input() max: number = 100; // will be input

    @Input() greaterOrEqual: number = 23; // will be input
    @Input() lessOrEqual: number = 77; // will be input

    @HostListener('keypress', ['$event']) sanitizeValue(event: KeyboardEvent): boolean {

        const …
Run Code Online (Sandbox Code Playgroud)

javascript typescript angular

5
推荐指数
1
解决办法
9883
查看次数

处理得很好"POST内容 - 字节长度超过"警告限制

美好的一天)我正在构建一个WordPress插件LMS,允许用户通过AJAX将他们完成的家庭作业文件附加到他们的答案.一切正常,但用户文件超过允许的最大大小的情况除外.在这种情况下,我的AJAX调用返回HTML,并带有以下警告:

<b>Warning</b>:  POST Content-Length of XXXXX bytes exceeds the limit of XXXXX bytes in <b>Unknown</b> on line <b>0</b><br />
Run Code Online (Sandbox Code Playgroud)

由于在我的脚本的字符串0上生成了这种警告,它会死掉并忽略任何其他指令,因为我的调用留下了这个丑陋的字符串.你基本上可以忍受它,因为最终用户不会看到它(只是AJAX调用没有预期的结果),但仍然想知道是否有机会跳过它并很好地处理它?

好的,我已经做过什么样的研究:

  1. 我发现Andrew Curioso的这个教程,并尝试从中做出类似的东西:

    if (isset($_SERVER['CONTENT_LENGTH'])) {
        if ($_SERVER['CONTENT_LENGTH'] > (substr(ini_get('post_max_size'), -1) * 1024 * 1024)) {
            echo 'php errors is so much fun';
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

它没有产生预期的效果,因为我的脚本仍然只有从IF语句回显附加字符串的积极效果而死(此外,如果你尝试做类似wp_send_json(errorsArray)的事情,它将不会被执行).

  1. 使用display_errors,error_reporting关闭显示错误.好吧,这不是我需要的,因为它仍然不允许我继续使用脚本并创建自定义错误处理程序.

  2. 我的WP_DEBUG设置为FALSE

我不想要的什么样的建议是手动编辑max_upload_size,max_post_size等.因为手动编辑服务器文件不符合插件的原则.无论如何,即使您将最大上传大小设置为10GB,一旦最终用户尝试上传11GB.

总而言之,众所周知,这种机制是在数千个网站和应用程序上实现的,我想知道如何最大限度地提高我的脚本质量,处理这个问题而不会出现过度杀伤和糟糕的用户体验.

感谢分享您的想法:)

UPD1 如果有帮助,这是我的AJAX调用:

$('#post-assignment-answer').on('click', function (event) {
    event.preventDefault();

    tinymce.triggerSave();
    var answerContent = tinymce.get('assignment_user_input_textarea').getContent();

    var answerFile = $('#assignment-file-upload')[0].files[0];

    var formData = new FormData(); …
Run Code Online (Sandbox Code Playgroud)

php ajax wordpress

4
推荐指数
1
解决办法
2528
查看次数

Angular 4 观看双向绑定属性变化

我创建了一个toggle-sorting组件,它检查当前的排序参数是否匹配它的排序 slug,并处理点击以输出更改

// toggle-sorting.component.ts

@Input() sortingSlug: string;
@Input() currSorting: string;
@Output() currSortingChange: EventEmitter<string> = new EventEmitter<string>();

@HostBinding('class.sorting-asc') activeAsc: boolean;
@HostBinding('class.sorting-desc') activeDesc: boolean;

/**
 * Watch sorting params changes and update binding
 */
ngOnChanges() {
    this.activeDesc = this.currSorting === this.sortingSlug;
    this.activeAsc = this.currSorting === '-' + this.sortingSlug;
}

/**
 * Watch click event to set sorting
 */
@HostListener('click') setSorting() {
    if (this.activeDesc) {
        this.currSortingChange.emit('-' + this.sortingSlug);
    } else {
        this.currSortingChange.emit(this.sortingSlug);
    }
}
Run Code Online (Sandbox Code Playgroud)

我以这种方式使用我的父组件

// parent.component.html

// ... some layout …
Run Code Online (Sandbox Code Playgroud)

typescript angular

2
推荐指数
1
解决办法
3040
查看次数

标签 统计

angular ×3

typescript ×3

javascript ×2

ajax ×1

php ×1

wordpress ×1