gpt4 book ai didi

javascript - 如何使用 TypeScript 和 AngularJs 组织辅助函数

转载 作者:行者123 更新时间:2023-12-03 08:00:21 24 4
gpt4 key购买 nike

我正在使用 AngularJsTypeScript 编写我的网络应用程序。这很好,但我有一个概念问题。在大多数情况下,我使用 AngularJs 服务来封装一些功能,例如本地存储的类型化抽象。

但我不知道如何处理一些简单的辅助函数,使用 AngularJs 创建一个简单的辅助 service 或使用 TypeScript 创建一个简单的类AngularJs 项目中的最佳方式。

我还会在我的其他 AngularJs 项目中重用此辅助函数

目前作为服务实现的示例:

module App.Views.Shared {

export interface IPasteSrv {
getPastedText($pasteEvent): string;
}

export class PasteSrv implements IPasteSrv {
static $inject = [];

constructor() { }

public getPastedText($pasteEvent): string {
var pastedText = "";

if (window.clipboardData) { //IE
pastedText = window.clipboardData.getData('Text');
} else if ($pasteEvent.originalEvent.clipboardData) {
try {
pastedText = $pasteEvent.originalEvent.clipboardData.getData('text/plain');
} catch (ex) {
pastedText = undefined;
}
}

if (pastedText) {
//verhindern das der Text im Model eingefügt wird.
$pasteEvent.preventDefault();
}

return pastedText;
}

//#region Angular Module Definition
private static _module: ng.IModule;

public static get module(): ng.IModule {
if (this._module) {
return this._module;
}

this._module = angular.module('pasteSrv', []);
this._module.service('pasteSrv', PasteSrv);
return this._module;
}
//#endregion
}
}

最佳答案

这取决于您想要实现的目标。通常我会区分通用行为和常见行为。从广义上讲,通用意味着可以在项目之间共享,通用意味着可以在项目的各个部分中共享。

您将其视为简单的辅助函数,我可能将其视为通用函数。该代码甚至不必依赖于 Angular,也不需要以任何形式共享状态。具有导出函数的 Typescript 模块将是一种可行的方法。当然,像 Angular 这样的整个框架也符合通用性,但由于你的问题有点模糊,我只是简单地说框架构建需要对代码有不同的看法。用户现在是另一个编码员,你不知道他/她将来可能想用你的框架做什么(这里想到了可靠原则的开放/封闭原则)。

您的 getPastedText 函数是通用的;因此,我只需将其放入剪贴板模块中并导出该函数。没有共享状态,因此不需要类。不需要涉及 Angular,因此不需要涉及 Angular 模块或服务。保持简单。

关于javascript - 如何使用 TypeScript 和 AngularJs 组织辅助函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34607657/

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