使用angular-ui-router
angular
找到here的外部路由插件,我试图了解嵌套的命名视图是如何工作的。我让最初的演示工作正常,但试图做一些修改,像这样;
$stateProvider
.state('default', {
url: "/default",
views: {
"viewA" : { templateUrl: "angular/partials/default.A.html" },
"viewB" : { templateUrl: "angular/partials/default.B.html" }
}
})
.state('state1.list', {
url: "/state1list",
views: {
"viewAList" : {
templateUrl: "angular/partials/state1.list.html",
controller: function($scope) {
$scope.items = ["A", "List", "Of", "Items"];
}
}
}
});
我的想法是将列表内容设置为嵌套在named view
文件中的default.A.html
。
我收到的错误信息是这个;
错误:无法从状态'default'
解析'state1.list'
html看起来像这样;
<div ui-view="viewA"></div>
<div ui-view="viewB"></div>
<h1>Default.A.HTML</h1>
<hr />
<a ui-sref="state1.list">Show List</a>
<div ui-view="viewAList"></div>
<h3>List of State 1 Items</h3>
<ul>
<li ng-repeat="item in items">{{ item }}</li>
</ul>
<h1>Default.B.HTML</h1>
<hr />
答案 0 :(得分:1)
问题是当你提供state1.list时,&#39; state1&#39;州被认为是“州名”的父母。州。但是你没有一个名为“state1&#39;”的州。一旦您将其更改为&#39; default.list&#39;,推断的父级就是默认&#39;,这是有效的,因为您确实有默认的&#39;州。如果您创建了一个名为&#39; state1&#39;然后另一个名为&#39; state1.list&#39;然后那也行。
命名您的州(来自https://github.com/angular-ui/ui-router/wiki/Nested-States-%26-Nested-Views)
没有两个州可以拥有相同的名称。使用点符号时 如果未明确提供,则推断父项,但这并不是 改变州名。不使用点表示法时,父必须是 明确提供,但你仍然无法命名任何两个州 同样,例如,你不能有两个不同的状态名为&#34;编辑&#34; 即使他们有不同的父母。