Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从绝对URL生成AngularDart请求模板?_Dart_Angular Dart - Fatal编程技术网

如何从绝对URL生成AngularDart请求模板?

如何从绝对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请求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
请求相同的模板

这显然是不可取的行为。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的意思正好相反:浏览器的位置可以改变