gpt4 book ai didi

javascript - 为 Typescript 中的 Angular Directive(指令)错误键入服务对象

转载 作者:行者123 更新时间:2023-11-30 17:27:32 25 4
gpt4 key购买 nike

下面是一个 Angular Directive(指令)的 typescript 。问题在于注入(inject)的服务“datacontext”。调试器显示构造函数中的 datacontext 是一个 WINDOW 对象,而不是作为服务创建的 datacontext 对象。因此,在 scope.viewRecord 函数中,datacontext.cancelChanges() 函数显然是未定义的 - - 因为它不是 WINDOW 对象的一部分 这可能是一些我不明白的奇怪的范围问题,但我不知道如何调试它。任何见解将不胜感激。谢谢。

module app {
export interface IEditButtonGroup {
...
}

export interface IEditButtonScope extends ng.IScope {
...
}

export class PrxEditButtonGroup implements IEditButtonGroup {
public static $inject: Array<string> = [
"datacontext"
];
constructor(
public datacontext: IDataContext, <---- datacontext HERE is typed as a WINDOW object
public directive: ng.IDirective = {}) {
directive.templateUrl = "app/directives/templates/editbuttongroup.html",
directive.restrict = 'E';
directive.link = (scope: IEditButtonScope, element, attr) => {
scope.isEditing = false;
scope.isAdding = false;

$("form.disabled").find("input:not(:disabled), select:not(:disabled), textarea:not(:disabled)").prop("disabled", true);

scope.editRecord = () => {
$("input, select, textarea").removeAttr("disabled");
scope.isEditing = true;
scope.afterEdit();
}

scope.viewRecord = (afterCancel: boolean) => {
datacontext.cancelChanges(); <--- HERE TOO! Debugger says datacontext = WINDOW object
scope.isEditing = scope.isAdding = false;
$("form.disabled").find("input:not(:disabled), select:not(:disabled), textarea:not(:disabled)").prop("disabled", true);
scope.afterAdd();
}
}
return <any>directive;
}
}
}

最佳答案

错误似乎是在你注册这个指令的地方。确保它像:

mymodule.directive('prxEditButtonGroup',app.PrxEditButtonGroup )

关于javascript - 为 Typescript 中的 Angular Directive(指令)错误键入服务对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23925530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com