我们团队的等待指令模板渲染的设计模式是将我们的DOM操作代码包装在$timeout(在指令的链接函数中),我一度知道它是正常的设计模式.这仍然是真的,还是有更好/更安全的设计模式来做到这一点?
模式示例在ECMAScript6中:
link: ($scope, $element) => {
$timeout(() => {
var domElementFromTemplate = $element.find('myDOMElement');
}
}
Run Code Online (Sandbox Code Playgroud) 如何在Typescript中按预期进行以下工作?
export class ProxyObject<T> {
private _dataObject:T;
constructor(dataObject?:T) {
if (dataObject) {
this.dataObject = dataObject;
} else {
//create a new instance of the generic <T> here
this.dataObject = <T> new Object();
}
}
set dataObject(dataObject:T) {
this._dataObject = dataObject;
}
get dataObject():T {
return this._dataObject;
}
}
export class ClassA {
myCoolProperty = "My Cool Property";
}
Run Code Online (Sandbox Code Playgroud)
当我执行以下操作时:
export class MyObject extends ProxyObject<ClassA> {
}
Run Code Online (Sandbox Code Playgroud)
然后:
var obj = new MyObject();
obj.dataObject.myCoolProperty === undefined
Run Code Online (Sandbox Code Playgroud)
正如我所期望的,MyObject内部的dataObject上没有ClassA属性或函数。例如,我希望dataObject具有myCoolProperty。
我正在尝试编写一个ProxyObject类,该类在扩展时将DataObject存储类型键入为泛型。
谢谢!!