我希望将Unity WebGL项目集成到Angular2应用程序中。将所有这些脚本移至Angular2组件的正确方法是什么?
首先,Unity WebGL像这样导出index.html:
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Unity WebGL Player | Espoo web manager (Prefab preview)</title>
<link rel="shortcut icon" href="TemplateData/favicon.ico">
<link rel="stylesheet" href="TemplateData/style.css">
<script src="TemplateData/UnityProgress.js"></script>
<script src="Build/UnityLoader.js"></script>
<script>
var gameInstance = UnityLoader.instantiate("gameContainer", "Build/builds.json", {onProgress: UnityProgress});
</script>
</head>
<body>
<div class="webgl-content">
<div id="gameContainer" style="width: 960px; height: 600px"></div>
<div class="footer">
<div class="webgl-logo"></div>
<div class="fullscreen" onclick="gameInstance.SetFullscreen(1)"></div>
<div class="title">Espoo web manager (Prefab preview)</div>
</div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我开始拆分,首先将样式表移动到模板.css文件中:
@import './webgl-app/TemplateData/style.css';
Run Code Online (Sandbox Code Playgroud)
然后,我将javascript移至组件.ts-file中:
import { Component, AfterViewInit } …Run Code Online (Sandbox Code Playgroud) 我有一个组件 MainPageComponent。当用户从顶部菜单中单击“主页”时,我的自定义 RouteReuseStrategy 会从内存中恢复“主页”路线,用户从他离开的地方选择。我怎样才能在这个恢复组件的代码中知道它何时被恢复并恢复活动?
我假设 ngOnInit 没有被调用,因为这不是组件 init,但它已经启动并运行。RouteReuseStrategy 在恢复时是否对组件调用了某些方法?
我不知道是否相关,但这是我使用的自定义 RouteReuseStrategy 组件。此处“主页”的路由将在 routesToStore 数组中 - 这些路由根据请求从内存中恢复。
import { ActivatedRouteSnapshot, RouteReuseStrategy, DetachedRouteHandle } from '@angular/router';
interface RouteStorageObject {
snapshot: ActivatedRouteSnapshot;
handle: DetachedRouteHandle;
}
export class CustomReuseStrategy implements RouteReuseStrategy {
constructor() {
// Determine which routes to preserve
this.routesToStore = ["search", "favorites", "explore"];
}
routesToStore: string[];
storedRoutes: { [key: string]: RouteStorageObject } = {}
// If returns false, user is let to leave current view
shouldReuseRoute (future: ActivatedRouteSnapshot, current: ActivatedRouteSnapshot): boolean { …Run Code Online (Sandbox Code Playgroud) 我想通过params将两个值传递给新的ui-view:
但是,我希望新视图只显示浏览器URL中的id,而不是字符串化的对象数组:
http://www.myapp.com/#/my-view/4
INSTEAD OF
http://www.myapp.com/#/my-view/4?flskdjalfjaewoijoijasdlfkjösldakjföliwejöorijo
Run Code Online (Sandbox Code Playgroud)
是否可以a)将隐藏的对象数组传递给ui-view或b)传递两者但是将另一个隐藏在浏览器URL中?
我发现了一些关于squash参数的东西,但是无法让它做我正在尝试的事情.
这是我的观点:
$stateProvider
.state('show', {
url: "/show/{itemId}?{itemList}",
views: {
'mainView': {
templateUrl: 'views/itemView.html',
controller: 'showController',
params: {
itemList: {
value: null,
squash: true
},
itemId: -1
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何在不隐藏ID的情况下隐藏URL中的对象列表?