我在django中有模板文件夹,其中我的应用程序的所有模板/部分都驻留在其中。我希望将所有部分加载到开头角度的模板缓存中,而不是根据控制器请求。
我有这样的路线设置:
var myApp = angular.module('myApp', []).
config(['$routeProvider', function ($routeProvider) {
$routeProvider.
when('/landing', {
templateUrl: '/landing-partial',
controller: landingController
}).
when('/:wkspId/query', {
templateUrl: '/query-partial',
controller: queryController
}).
otherwise({
redirectTo: '/landing'
});
}]);
我想在django中解决类似于rails gem(https://github.com/pitr/angular-rails-templates)的问题。
答案 0 :(得分:1)
根据您的构建系统,有些插件可以为您解决此问题。
对于GruntJS: https://www.npmjs.com/package/grunt-angular-templates
和Gulp: https://www.npmjs.com/package/gulp-angular-templatecache
只需将它们指向您的html文件,它们就会创建一个类似于:
的javascript文件 angular.module('app').run(["$templateCache", function($templateCache) {
$templateCache.put("home.html",
// contents for home.html ...
);
并将从那里解析模板,而不是发出http请求来获取实际文件。 您只需要将此js文件与您的应用脚本标记一起包含在内,就可以了。
答案 1 :(得分:0)
您可以像在这里一样在index.html中插入模板:
<script type="text/ng-template" id="/landing-partial">
Content of the template.
</script>
<script type="text/ng-template" id="/query-partial">
Content of the template.
</script>
之后,您可以在路由器中使用这些模板:
var myApp = angular.module('myApp', []).
config(['$routeProvider', function ($routeProvider) {
$routeProvider.
when('/landing', {
templateUrl: '/landing-partial',
controller: landingController
}).
when('/:wkspId/query', {
templateUrl: '/query-partial',
controller: queryController
}).
otherwise({
redirectTo: '/landing'
});
}]);
它的工作方式类似于您提供的模块。角度自举模板将被放到$ templateCache并可以在任何地方使用。