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

时间:2016-01-05 08:58:43

标签: javascript angularjs typescript

我正在使用AngularJsTypeScript撰写我的网络应用。这很有效,但我有一个概念问题。在大多数情况下,我使用AngularJs Services来封装一些功能,例如localstorage的类型抽象。

但是我不确定如何处理一些简单的帮助函数,用service创建一个简单的帮助AngularJs或用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 } } 项目

中重用这个辅助函数

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

FloatingActionButton

1 个答案:

答案 0 :(得分:1)

这取决于你想要达到的目标。通常我会区分通用行为和常见行为。从广义上讲,通用意味着项目之间的共享和在项目的各个部分可共享的共同方式。

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

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