gpt4 book ai didi

angularjs - 使用不同状态的通用模板

转载 作者:行者123 更新时间:2023-12-03 07:01:12 24 4
gpt4 key购买 nike

我希望能够在我的应用程序的所有状态(基本上是标题和侧边栏)中使用两个常见组件。我已经阅读了文档,但我一定错过了一些东西。我如何在各州重用标题和侧边栏

  $stateProvider
.state('home', {
url: '/leads:id',
views: {
'details': {
templateUrl: '../views/details.html',
controllerProvider: function($stateParams) {
if($stateParams.id) {
return 'CompanyDetails as companydetails';
}else {
return 'NewCompanyDetailsController as companydetails';
}

}
},
'sidebar': {
templateUrl: '../views/sidebar.html'
},
'header': {
templateUrl: '../views/header.html',
controller: 'HeaderCtrl as header'
},
'vehicledetails': {
templateUrl: '../views/vehicledetails.html',
controller: 'VehicleDetailsController as vehicledetails'
},
'comments': {
templateUrl: '../views/comments.html',
controller: 'CommentsController as comments'
},
'saveupdate': {
templateUrl: '../views/saveupdate.html',
controller: 'SaveUpdateDetailsController as saveupdate'
}
}

});

我想创建另一个名为“数据”的状态,例如它重用标题和侧边栏。我怎样才能实现这一点而不需要再次写下所有组件?

我做了一些阅读,现在,我有一个更新的状态提供程序,它在所有路由上显示公共(public)标题和侧边栏,但实际容器内的数据根本没有显示。这是我更新的代码

$stateProvider
.state('home', {
abstract: true,
views: {
'header': {
templateUrl: '../views/header.html',
controller: 'HeaderCtrl as header'
},
'sidebar': {
templateUrl: '../views/sidebar.html'
}
},
resolve: {
somedata: function(){return {}}
}

})
.state('home.login', {
url: '/',
views: {
'login@home': {
templateUrl: '../views/login.html'
}
}
})
.state('home.leads', {
url: '/leads:id',
views: {
'details@home': {
templateUrl: '../views/details.html',
controllerProvider: function($stateParams) {
if($stateParams.id) {
return 'CompanyDetails as companydetails';
}else {
return 'NewCompanyDetailsController as companydetails';
}
}
},
'vehicledetails@home': {
templateUrl: '../views/vehicledetails.html',
controller: 'VehicleDetailsController as vehicledetails'
},
'comments@home': {
templateUrl: '../views/comments.html',
controller: 'CommentsController as comments'
},
'saveupdate@home': {
templateUrl: '../views/saveupdate.html',
controller: 'SaveUpdateDetailsController as saveupdate'
}
}

});

和我的index.html

<body ng-app="MyApp">
<div id="page-wrapper" ng-class="{'open': toggle}" ng-cloak class="open" ng-controller="SlideCtrl">
<div id="sidebar-wrapper" ui-view="sidebar">
</div>
<div id="content-wrapper">
<div class="page-content">
<!-- Header Bar -->
<div class="row header" ui-view="header">
</div>
<!-- Header Bar -->
<div ui-view="login"></div>
<div ui-view="details" class="panel panel-default col-xs-11" ></div>
<div ui-view="vehicledetails" class="panel panel-default col-xs-11" ></div>
<div ui-view="comments" class="panel panel-default col-xs-11" ></div>
<div ui-view="saveupdate"></div>
</div>
</div>
</div>
<script src="js/main.js"></script>
</body>

最佳答案

我现在实际上设法使用此链接 https://stackoverflow.com/a/28826126/1679310 使其正常工作

我会解释我的答案,因为在我自己做之前我无法理解它是如何工作的。您需要它存在才能让子状态插入它。 https://github.com/angular-ui/ui-router/wiki/Nested-States-%26-Nested-Views#scope-inheritance-by-view-hierarchy-only

基本上,您在index.html中创建一个主ng View ,作为其他部分的容器,然后您基本上将所有子ui View 包含在另一个布局中,该布局将作为所有状态的父 View 。

所以本质上你的结构是这样的

<body ng-app="MyApp">
<div id="page-wrapper" ng-class="{'open': toggle}" ng-cloak class="open" ng-controller="SlideCtrl">
<div ng-view>
</div>
</div>
<script src="js/main.js"></script>

和另一个具有布局的文件

 <div id="sidebar-wrapper" ui-view="sidebar">
</div>
<div id="content-wrapper">
<div class="page-content">
<!-- Header Bar -->
<div class="row header" ui-view="header">
</div>
<!-- Header Bar -->
<div ui-view="login"></div>
<div ui-view="details" class="panel panel-default col-xs-11" ></div>
<div ui-view="vehicledetails" class="panel panel-default col-xs-11" ></div>
<div ui-view="comments" class="panel panel-default col-xs-11" ></div>
<div ui-view="saveupdate"></div>
</div>
</div>

那么你基本上遵循这里的模式

  $stateProvider
.state('home', {
abstract: true,
views: {
'@': {
templateUrl: '../views/layouts.html'
},
'header@home': {
templateUrl: '../views/header.html',
controller: 'HeaderCtrl as header'
},
'sidebar@home': {
templateUrl: '../views/sidebar.html'
}
}
})
.state('home.login', {
url: '/',
views: {
'login@home': {
templateUrl: '../views/login.html'
}
}
})

对于您所有的州。这对我有用,我很确定这是正确的方法。

关于angularjs - 使用不同状态的通用模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30523142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com