我有一个AngularJs应用程序,启动页面为index.html,默认情况下会显示项目视图,在页面顶部我显示一个图标来显示待办事项(对于登录用户)我正在使用bootstrap的数据切换下拉列表。问题是每当我点击todo链接时,部分视图(todo.html)没有显示。顺便说一句,我是角色世界的新手所以如果有什么傻话,请原谅我。请参阅以下代码:
的index.html
<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head></head>
<body>
<a data-toggle="dropdown" class="dropdown-toggle" ui-sref=".todo">
<i class="icon-tasks"></i>
<span class="badge badge-grey">4</span>
</a>
<div ng-view></div>
</body>
app.js
// For any unmatched url, redirect to /projects
$urlRouterProvider.otherwise("/projects");
//
// Now set up the states
$stateProvider
.state('projects', {
url: "/projects",
templateUrl: "/app/views/projects/projects.html",
controller: "projectController"
})
.state('projects.todo', {
url: "/todo",
templateUrl: "/app/views/todo/todo.html"
});
答案 0 :(得分:2)
首先在根模板中将 ng-view 替换为 ui-view ,因为您似乎想要使用ui-router而不是ng-router。< / p>
使用div ui-view
作为父元素包装模板文件的内容。
/app/views/projects/projects.html
/app/views/todo/todo.html
<div ui-view>
... previously defined content ...
</div>
让我们说你的观点是
<div class="container">
<div class="page-header">
<h1>Title: {{title}}</h1>
</div>
</div
您需要将ui-view
添加到div
<div class="container" ui-view>
<div class="page-header">
<h1>Title: {{title}}</h1>
</div>
</div
或使用包含div
描述符的ui-view
包装您的视图,以防您的vie包含多个标记。
我没有向您展示一个示例,因为您没有提供视图文件的内容。
/app/views/projects/projects.html
/app/views/todo/todo.html
问题是,在拳头模板应用角度后,再也看不到放置新模板的位置了。
答案 1 :(得分:0)
然后要实现您的下拉,请查看他们的基本示例。如果您想使用单独的视图文件来定义下拉内容,可以使用<div ng-include="'mycontent.html'"></div>
。
答案 2 :(得分:0)
在ui-router中你在$ stateProvider中定义了所有这些,所以你应该定义你有一个视图,它有另一个属于它的视图,例如:
<!-- In index.html the main view that will have all the page views-->
<div id="main" ui-view="main"></div>
<!-- In todo.html with a partial with the dropdown code in dropdown.html -->
<h1> This is a nice todo drop down </h1>
<div id="todoDropDown" ui-view="todoDropDown"></div>
//In your app file
.state('projects.todo', {
url: '/todo',
views: {
'main@': {
templateUrl: '/app/views/todo/todo.html',
controller: 'TodoCtrl'
},
'todoDropDown@projects.todo': {
templateUrl: '/app/views/partials/dropdown.html'
}
}
})
&#34; todoDropDown@projects.todo"这样做很神奇,它告诉这个视图里面还有另一个视图。您可以添加控制器以及ui-router中的所有其他选项。通过这种方式,您可以尽可能多地分解可重复使用的部件。