AngularJS ui-路由器无法加载 templateUrl
AngularJS ui-router unable to load templateUrl
我有这样的项目结构:
index.html
<html>
<head></head>
<body ng-app="myApp">
<div ui-view=""></div>
</body>
</html>
bread.html
<div class="col-md-12">
This is the bread view.
<div ui-view="filters"></div>
<div ui-view="tabledata"></div>
<div ui-view="graph"></div>
</div>
bread.js
'use strict';
angular.module('myApp')
.config(function ($stateProvider) {
$stateProvider
.state('bread', {
url: '/bread',
views: {
'@': {
templateUrl: 'app/breadcrumbs/views/home.tpl.html',
},
'filters@bread': {
templateUrl: 'app/breadcrumbs/views/home1.tpl.html',
},
},
controller: 'BreadCtrl'
});
});
作为模板加载的 html 文件非常简单。只包含段落标签。
我试过使用嵌套视图,但是在 ui-view="filters" 中我无法加载模板。
基本上你应该把你bread.html
放在你状态的基础视图中,然后从视图中加载named-view
,@
代表这里的基础布局模板
.config(function ($stateProvider) {
$stateProvider
.state('bread', {
url: '/bread',
views: {
'@': {
//I don't know the exact bread.html url, it can be different
templateUrl: 'bread.html', //base layout which will make named-view available
},
'filters@bread': {
templateUrl: 'app/breadcrumbs/views/home1.tpl.html',
},
'tabledata@bread': {
templateUrl: 'app/breadcrumbs/views/tabledata.tpl.html',
},
'graph@bread': {
templateUrl: 'app/breadcrumbs/views/tabledata.tpl.html',
},
},
controller: 'BreadCtrl'
});
});
如果您想使用命名视图,您必须使用 ui-view
指令指定名称。或者只是将它作为 'clean' 没有值的指令:<div ui-view></div>
如果您想使用嵌套视图,您需要创建父视图和子视图。在这种情况下,您首先在 main ui-view
指令中加载父视图,然后在父视图中加载子视图。所以你的父视图也必须在里面包含 ui-view
指令。在这种情况下,您的状态应该是这样的:
.state("parent", {
url: "/parentSegment",
templateUrl: "path to parent view"
})
.state("parent.child", {
url: "/childSegment",
templateUrl: "path to your child view"
})
本例中的结果 url 将是 protocol://host/parentSegment/childSegment
您可以跳过 url 中的子片段,只需将 url 子参数留空即可:
.state("parent.child", {
url: "/",
templateUrl: "path to your child view"
})
在这种情况下,您将有 protocol://host/parentSegment
如您所见,嵌套视图的名称中有 'prefix' 与父视图名称相同,名称的子部分附加有点 (.)
有关嵌套视图的信息,请参阅 this link, and for more info about named view you should visit this link
我有这样的项目结构:
index.html
<html>
<head></head>
<body ng-app="myApp">
<div ui-view=""></div>
</body>
</html>
bread.html
<div class="col-md-12">
This is the bread view.
<div ui-view="filters"></div>
<div ui-view="tabledata"></div>
<div ui-view="graph"></div>
</div>
bread.js
'use strict';
angular.module('myApp')
.config(function ($stateProvider) {
$stateProvider
.state('bread', {
url: '/bread',
views: {
'@': {
templateUrl: 'app/breadcrumbs/views/home.tpl.html',
},
'filters@bread': {
templateUrl: 'app/breadcrumbs/views/home1.tpl.html',
},
},
controller: 'BreadCtrl'
});
});
作为模板加载的 html 文件非常简单。只包含段落标签。
我试过使用嵌套视图,但是在 ui-view="filters" 中我无法加载模板。
基本上你应该把你bread.html
放在你状态的基础视图中,然后从视图中加载named-view
,@
代表这里的基础布局模板
.config(function ($stateProvider) {
$stateProvider
.state('bread', {
url: '/bread',
views: {
'@': {
//I don't know the exact bread.html url, it can be different
templateUrl: 'bread.html', //base layout which will make named-view available
},
'filters@bread': {
templateUrl: 'app/breadcrumbs/views/home1.tpl.html',
},
'tabledata@bread': {
templateUrl: 'app/breadcrumbs/views/tabledata.tpl.html',
},
'graph@bread': {
templateUrl: 'app/breadcrumbs/views/tabledata.tpl.html',
},
},
controller: 'BreadCtrl'
});
});
如果您想使用命名视图,您必须使用 ui-view
指令指定名称。或者只是将它作为 'clean' 没有值的指令:<div ui-view></div>
如果您想使用嵌套视图,您需要创建父视图和子视图。在这种情况下,您首先在 main ui-view
指令中加载父视图,然后在父视图中加载子视图。所以你的父视图也必须在里面包含 ui-view
指令。在这种情况下,您的状态应该是这样的:
.state("parent", {
url: "/parentSegment",
templateUrl: "path to parent view"
})
.state("parent.child", {
url: "/childSegment",
templateUrl: "path to your child view"
})
本例中的结果 url 将是 protocol://host/parentSegment/childSegment
您可以跳过 url 中的子片段,只需将 url 子参数留空即可:
.state("parent.child", {
url: "/",
templateUrl: "path to your child view"
})
在这种情况下,您将有 protocol://host/parentSegment
如您所见,嵌套视图的名称中有 'prefix' 与父视图名称相同,名称的子部分附加有点 (.)
有关嵌套视图的信息,请参阅 this link, and for more info about named view you should visit this link