多次在Angular组件中使用wasm文件(使用imgui)运行javaScript脚本
我想在angular component上运行wasm imgui文件,这是菜单选项卡的内容之一。 Wasm直接基于: 组成部分: wasm-app-components.ts多次在Angular组件中使用wasm文件(使用imgui)运行javaScript脚本,javascript,angular,webassembly,emscripten,imgui,Javascript,Angular,Webassembly,Emscripten,Imgui,我想在angular component上运行wasm imgui文件,这是菜单选项卡的内容之一。 Wasm直接基于: 组成部分: wasm-app-components.ts import { Component, OnInit } from '@angular/core'; import { get } from 'scriptjs'; @Component({ selector: 'app-wasm-app', templateUrl: './wasm-app.component
import { Component, OnInit } from '@angular/core';
import { get } from 'scriptjs';
@Component({
selector: 'app-wasm-app',
templateUrl: './wasm-app.component.html',
styleUrls: ['./wasm-app.component.scss']
})
export class WasmAppComponent implements OnInit {
constructor() {}
ngOnInit(): void {
console.log('init');
get("assets/index.js", () => {
console.log("index loaded");
});
get("assets/runIndex.js", () => {
console.log("run index loaded");
});
}
}
wasm-app.component.html
<canvas class="emscripten" id="canvas" ></canvas>
第二个是由emscriptenjs文件生成的(大约7000行),但老实说,我不想修改它。如果您想查看它的外观,只需生成它(页面顶部的链接)
问题是wasm只在第一个条目上生成。在第二个条目中,我有一个错误:
Uncaught TypeError: Cannot read property 'emscripten_stack_get_end' of undefined
我想以某种方式撤销在nit方法上发生的所有事情。我试着将它包装在container div中,并在onDestroy中删除子对象,但这不起作用
以下是“紧急解决方案”:
但这仍然不是我正在寻找的解决方案。
最后一个最令人满意(但并不完美)的方法是使用href而不是routerLink
Uncaught TypeError: Cannot read property 'emscripten_stack_get_end' of undefined
initWasm(){
get("assets/index.js", () => {
console.log("index loaded");
});
get("assets/runIndex.js", () => {
console.log("run index loaded");
});
}
delay(ms: number) {
return new Promise( resolve => setTimeout(resolve, ms) );
}
ngOnInit(): void {
(async () => {
await this.delay(5000);
this.initWasm();
})();