我正在使用AngularJs
和TypeScript
撰写我的网络应用。这很有效,但我有一个概念问题。在大多数情况下,我使用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
答案 0 :(得分:1)
这取决于你想要达到的目标。通常我会区分通用行为和常见行为。从广义上讲,通用意味着项目之间的共享和在项目的各个部分可共享的共同方式。
你有资格作为简单的帮助函数我可能有资格作为通用的。该代码甚至不必依赖于Angular,也不需要以任何形式共享状态。具有导出功能的Typescript模块将是一种方法。当然像Angular这样的整个框架也有资格作为通用框架,但由于你的问题有点模糊,我只是简单地说框架构建需要对代码有不同的看法。用户现在是另一个编码器,你不知道他/她将来可能想用你的框架做什么(这里可以想到坚固原则的开放/封闭原则)。
你的getPastedText函数是通用的;因此,我只需将其放入剪贴板模块并导出该功能。没有共享状态,因此不需要课程。无需涉及Angular,因此无需涉及角度模块或服务。保持简单。