ng模板,带有ui.router,单独的文件
ng-template with ui.router, separate files
目前我正在像今天这样在index.html文件中使用ng-template
,
<script type="text/ng-template" id="/home.html">
//html here...
</script>
我也在使用ui.router,它看起来像这样,
$stateProvider
.state('home', {
url: '/home',
templateUrl: '/home.html',
controller: 'mainController',
resolve: {
postPromise: ['serv', function(serv) {
return serv.getAll();
}]
}
});
这很好用。问题是,我想扩展我的应用程序,了解更多关于最佳实践以及如何实际使用angular。我的背景是.NET MVC,其中有主视图/视图/部分视图。所以我试着用angular做同样的方法,但在我的情况下,我有index.html
作为master,如果你愿意的话,home.html
将是view或partial。评估我得到的所有意见。
这里确实是一种类似的方法——至少在angular 1.x中是这样(尚未深入研究2)。:)
当我调查这件事时,我遇到了两个很好的消息来源:
- John Papa Angular风格指南
- 构建Angular应用程序的最佳实践
它们应该一起指向正确的方向。
您可以考虑在index.html文件中使用<ng-view>
。
index.html
<body>
<ng-include src="'app/views/structure/navigation.tpl.html'"></ng-include>
<ng-view autoscroll="true"></ng-view>
<ng-include src="'app/views/structure/footer.tpl.html'"></ng-include >
<!--Scripts-->
<!--<script src="bower_components/masonry/dist/masonry.pkgd.min.js"></script>-->
<!--<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>-->
<script src="assets/libs/flexslider/jquery.flexslider.js"></script>
<script src="assets/libs/masonry/masonry.pkgd.min.js"></script>
<script src="assets/libs/imagesloaded/imagesloaded.pkgd.min.js"></script>
<script src="assets/libs/angular/angular.min.js"></script>
</body>
在你的模块中,你可以让它看起来像:
var app = angular.module('myApp', ['ngRoute', 'ngSanitize', 'ui.bootstrap']);
以上自然是一个不同的文件。
现在您可以拥有app.routes
文件:
app.config(function($routeProvider, $locationProvider){
$routeProvider.when('/',{
templateUrl: "app/views/misc/home.tpl.html",
controller: "HomeController"
})
.when('/about',{
templateUrl: "app/views/misc/about.tpl.html",
controller: "AboutController"
})
.when('/hobbies',{
templateUrl: "app/views/pages/hobbies.html",
controller: "HobbiesController"
}).otherwise({redirectTo:'/'});
$locationProvider.html5Mode(true);
现在你需要一个控制器:
app.controller('HomeController', function($scope, ROOT) {
$scope.Root = ROOT;
console.log("In Home Controller")
$scope.top = {
backstretch: [
ROOT+'/assets/img/big/big-1.jpg',
ROOT+'/assets/img/big/big-2.jpg',
ROOT+'/assets/img/big/big-4.jpg'
]
};
});
现在,由于我使用了HomeController
,我将在本例中使用它。
我的路由文件说when('/')
转到文件路径app/views/misc/home.tpl.html
,控制器是HomeController
。由于在我的app.module
文件中我使用了var app = angular.module
,所以我只能写app.controller('HomeController)
,现在一切都连接起来了。
在我的home.tpl.html
中,我所要做的就是放置<div>
标签。
将根据项目的规模来描述设计。项目越大,你就越想让它模块化。
相关文章:
- 在单独的ul's
- Javascript排序的图像弹出窗口..可以't单独弹出
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- 混合 ui-sref 和 $state.go 在 Angular ui-router 中进行状态转换
- this.router在AngularJS 2中未定义
- Meteor Router数据函数被调用两次
- 将单独的数组深层键转换为所需的类型(数组或对象)
- 如何在router.get()方法中传递url作为参数
- renderReact/Rect Router+Node/Express.js的服务器端/同构渲染中未定义renderP
- 从单独的html文件预览Javascript文本
- 有什么“;错误的”;将javascript放在asp.net表单上,而不是放在单独的文件中
- 骨干's Router.execute(callback,args,name)方法获取未定义的名称
- 如何将要单独填充的每个HTML画布路径/形状分开
- 有没有办法用routerLink/router.navigation附加查询/路由参数
- 如何使jQuery中的悬停函数单独应用于数据库映像
- 如何在foreach循环中对每个产品单独应用评级系统
- react router router.HistoryLocation以<noscript>但没有完美的工作
- ng模板,带有ui.router,单独的文件
- Iron router,试图创建一个联系人应用,每个联系人都有单独的页面
- 如何使用iron:router为集合中的每个项目创建一个单独的链接