我正在使用AngularJS构建动态Web应用程序。ng-view
一个模板上可以有多个模板吗?
我正在使用AngularJS构建动态Web应用程序。ng-view
一个模板上可以有多个模板吗?
Answers:
您只能拥有一个ng-view
。
您可以通过几种方式更改其内容:ng-include
,ng-switch
或通过routeProvider映射不同的控制器和模板。
ng-show
和定义div 并ng-hide
使用变量控制其可见性不是更好吗?因为有时候我可能想隐藏/显示多个组件
UI-Router是一个可以提供帮助的项目:https : //github.com/angular-ui/ui-router 它的功能之一是多命名视图
UI-Router具有许多功能,如果您正在使用高级应用程序,我建议您使用它。
在此处检查“多个命名视图”的文档。
我相信您只需拥有一个即可完成此任务ng-view
。在主模板中,您可以具有ng-include
用于子视图的部分,然后在主控制器中,为每个子模板定义模型属性。这样它们将自动绑定到ng-include
节。这与拥有多个ng-view
您可以查看文档中给出的示例ng-include
在示例中,当您从下拉列表中更改模板时,它将更改内容。这里假设你有一个主要ng-view
主视图,而不是通过选择下拉列表来手动选择子内容,而是在加载主视图时进行操作。
使用常规ng-view
模块,您不能有多个动态模板。
但是,此项目使您能够这样做(查找ui-router
)。
可能有多个或嵌套的视图。但不是通过ng-view。
angular中的主要路由模块不支持多个视图。但是您可以使用ui-router。这是第三方模块,您可以通过Github,angular-ui / ui-router,https://github.com/angular-ui/ui-router获得。目前,还在开发新版本的ngRouter(ngNewRouter)。目前尚不稳定。因此,我为您提供了一个简单的ui-router启动示例。使用它,您可以命名视图并指定应使用哪些模板和控制器来呈现它们。使用$ stateProvider,您应该指定应如何呈现特定状态的视图占位符。
<body ng-app="main">
<script type="text/javascript">
angular.module('main', ['ui.router'])
.config(['$locationProvider', '$stateProvider', function ($locationProvider, $stateProvider) {
$stateProvider
.state('home', {
url: '/',
views: {
'header': {
templateUrl: '/app/header.html'
},
'content': {
templateUrl: '/app/content.html'
}
}
});
}]);
</script>
<a ui-sref="home">home</a>
<div ui-view="header">header</div>
<div ui-view="content">content</div>
<div ui-view="bottom">footer</div>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-ui-router/release/angular-ui-router.js">
</body>
您需要参考此示例的angularjs和angular-ui.router。
$ bower install angular-ui-router
您不能有多个ng-view。以下是我满足要求的用例。我希望在模型对话框中具有选项卡式的行为。我面临的问题是,单击具有超链接的选项卡将调用路由器链接。我使用按钮和CSS选项卡解决了这个问题。当用户单击选项卡时,它实际上不会调用任何将始终调用ng-router的超链接。当用户单击选项卡时,它将调用一个方法,在那里我会动态加载html。以下是单击选项卡上的功能
self.submit = function(form) {
$templateRequest('resources/items/employee/test_template.html').then(function(template){
var compiledeHTML = $compile(template)($scope);
$("#d").replaceWith(compiledeHTML);
});
用户$ templateRequest。在test_template.html页面中添加您的html内容。此html内容将绑定到您的控制器。