私は間違っていますか?私は、クラスに関するメタデータを保持するために、次のデコレータ機能を設定している、と彼らは両方の(データを取得するためにデータを設定するために1つずつ)のようになります。私は、このようにそれを使用しています反射デコレータがオブジェクトのデータを保存/取得していません
function setComponentMenu(text: string): any {
return Reflect.metadata('componentPath', text);
}
function getMenuPath(target: any): any {
return Reflect.getMetadata('componentPath', target);
}
、およびcustomEditor
デコレータはうまく動作し、Globals.editors
にCameraEditor
クラスのインスタンスを置きます:
@customEditor(Camera)
@setComponentMenu('Renderers/Camera')
class CameraEditor extends Editor {
}
値が設定されている、と私はこのようにそれを取り戻すためにしようとした後:
for(let i = 0; i < Globals.editors.length; i++){
let editor: Editor = Globals.editors[i];
let path = getMenuPath(editor);
console.log(path);
}
私は@setComponentMenu
を持っていないけどCameraEditor
が、それはので、私はコンソールがRenderers/Camera
を表示するように期待していないアイテムの罰金である、undefined
を取得しています。
どうしたのですか?
ありがとうございます!それはちょうど完全に動作します!私はプロトタイプで2番目の例を使用しましたが、それはトリックです! –