我想在路线:
中替换以下代码angular.module('app').config ($stateProvider, $urlRouterProvider) ->
.state 'statistics',
controller: 'AppCtrl'
templateUrl: '/app/statistics.html'
通过以下方式:
angular.module('app').config ($stateProvider, $urlRouterProvider) ->
.state 'statistics',
controller: 'AppCtrl'
templateUrl: Something.resolveTemplatePath('/app/statistics.html')
我的目标是根据某些配置添加前缀,但我需要知道前缀的路径是否确实存在。
我需要在我的路由中调用这个,所以我可能需要把这个功能放在Provider中,对吧?而且我真的不知道如何检查模板是否存在。我相信Angular会调用AJAX来加载模板,我看到我可以检查文件是否找到,但我不确定最佳解决方案是什么。
因为如果前缀的文件不存在,那么我必须加载没有前缀的文件(后备)。
最好的方法是什么?感谢。
答案 0 :(得分:0)
前缀的这种配置在哪里?在你的Angular代码中,还是像Gulp / Grunt这样的构建工具的一部分?
假设这个'前缀'是一个名为%.0f
的角度常量,你可以使用ui-router给出的TEMPLATE_PREFIX
和$templateCache
的组合
templateProvider
将templateProvider: Something.resolveTemplatePath('/app/statistics.html')
定义为服务为 -
Something
填充angular.module('app').service('Something', function($templateCache, TEMPLATE_PREFIX) {
this.resolveTemplatePath = function(templateURL) {
return $templateCache.get(TEMPLATE_PREFIX + templateURL) || $templateCache.get(templateURL);
}
});
- https://www.npmjs.com/package/grunt-angular-templates