如何从绝对URL生成AngularDart请求模板?
当AngularDart请求HTML模板时,它会请求一个相对于broswer当前URL的URL。例如,如果用户当前位于如何从绝对URL生成AngularDart请求模板?,dart,angular-dart,Dart,Angular Dart,当AngularDart请求HTML模板时,它会请求一个相对于broswer当前URL的URL。例如,如果用户当前位于/,则AngularDart可能会请求一个模板URL,如/packages/myapp/components/mycomponent.html。但是,如果浏览器位置是/foo或/foo/bar,则将分别从/foo/myapp/components/mycomponent.html或/foo/bar/myapp/components/mycomponent.html请求相同的模板
/
,则AngularDart可能会请求一个模板URL,如/packages/myapp/components/mycomponent.html
。但是,如果浏览器位置是/foo
或/foo/bar
,则将分别从/foo/myapp/components/mycomponent.html
或/foo/bar/myapp/components/mycomponent.html
请求相同的模板
这显然是不可取的行为。URL/foo
和/foo/bar
仅存在于AngularDart路由器中(我使用的是pushState
路由)。服务器对他们一无所知!即使服务器的URL名称相同,也不会将包
目录符号链接或在所有URL下加上别名
我在声明组件时尝试了绝对URL
///顶部导航栏。
@组成部分(
选择器:“导航”,
templateUrl:“/static/dart/web/packages/myapp/component/nav.html”,
useShadowDom:false
)
…但是pub build
抱怨
[Warning from _Serial on myapp|web/main.dart with input myapp|lib/component/nav.dart]:
line 6, column 1 of package:myapp/component/nav.dart: Cannot cache non-package absolute URIs. /static/dart/web/packages/myapp/component/nav.html
@Component(
^^^^^^^^^^^
声明templateUrl
的好方法是使其成为以packages/
开头的相对URL
///顶部导航栏。
@组成部分(
选择器:“导航”,
templateUrl:'packages/myapp/component/nav.html',
useShadowDom:false
)
因此,似乎我被迫使用相对URL作为模板,即使浏览器的位置与服务器上存储内容的位置完全不同
那么,我应该如何告诉AngularDart从绝对URL请求这些模板,而不是构建一个相对于浏览器当前位置的URL呢?我链接模板文件和css文件的通常方式是使用基于packages目录的路径 这是我声明的一个组件
@Component(
selector: 'game-card',
cssUrl: 'packages/myapp_name/components/game/game_card.css',
templateUrl: 'packages/myapp_name/components/game/game_card.html')
而game\u card.html
文件实际位于/lib/components/game/game\u card.html
myapp\u name
是您在pubspec.yaml
中为应用程序指定的名称。我链接模板文件和css文件的通常方式是使用基于packages目录的路径
这是我声明的一个组件
@Component(
selector: 'game-card',
cssUrl: 'packages/myapp_name/components/game/game_card.css',
templateUrl: 'packages/myapp_name/components/game/game_card.html')
而game\u card.html
文件实际位于/lib/components/game/game\u card.html
myapp\u name
是您在pubspec.yaml
中为应用程序指定的名称。我链接模板文件和css文件的通常方式是使用基于packages目录的路径
这是我声明的一个组件
@Component(
selector: 'game-card',
cssUrl: 'packages/myapp_name/components/game/game_card.css',
templateUrl: 'packages/myapp_name/components/game/game_card.html')
而game\u card.html
文件实际位于/lib/components/game/game\u card.html
myapp\u name
是您在pubspec.yaml
中为应用程序指定的名称。我链接模板文件和css文件的通常方式是使用基于packages目录的路径
这是我声明的一个组件
@Component(
selector: 'game-card',
cssUrl: 'packages/myapp_name/components/game/game_card.css',
templateUrl: 'packages/myapp_name/components/game/game_card.html')
而game\u card.html
文件实际位于/lib/components/game/game\u card.html
myapp\u name
是您在pubspec.yaml
1中为应用程序指定的名称
我没有一个理想的解决方案,但这里有一些帮助。我在文档级别声明了一个
元素,这样所有相关链接都将相对于该基本URL解析,而不是浏览器的位置(如问题中所述,该位置与所访问的实际服务器资源分离)
角度1
我没有一个理想的解决方案,但这里有一些帮助。我在文档级别声明了一个
元素,这样所有相关链接都将相对于该基本URL解析,而不是浏览器的位置(如问题中所述,该位置与所访问的实际服务器资源分离)
角度1
我没有一个理想的解决方案,但这里有一些帮助。我在文档级别声明了一个
元素,这样所有相关链接都将相对于该基本URL解析,而不是浏览器的位置(如问题中所述,该位置与所访问的实际服务器资源分离)
角度1
我没有一个理想的解决方案,但这里有一些帮助。我在文档级别声明了一个
元素,这样所有相关链接都将相对于该基本URL解析,而不是浏览器的位置(如问题中所述,该位置与所访问的实际服务器资源分离)
谢谢@Pacane,但我认为这在我的情况下不起作用。(因为我已经试过了。)你使用
pushState
路由吗?确实没有。问题是,我从未使用过push状态,因为据我所知,您必须管理请求服务器端以生成所需的页面。(因为使用push state实际上只是让查询进入您的web服务器)因此,如果我没有弄错,这意味着您的服务器必须呈现页面。或者告诉您的客户端您要呈现的页面。不,pushState
路由的意思正好相反:浏览器的位置可以更改,而无需向服务器发出任何请求。它实际上非常非常类似于散列路由。谢谢@Pacane,但我认为这在我的情况下不起作用。(因为我已经试过了。)你使用pushState
路由吗?确实没有。问题是,我从未使用过push状态,因为据我所知,您必须管理请求服务器端以生成所需的页面。(因为使用push state实际上只是让查询进入您的web服务器)因此,如果我没有弄错,这意味着您的服务器必须呈现页面。或者告诉你的客户你想要呈现的页面。不,pushState
routing的意思正好相反:浏览器的位置可以改变