Angular - 使用具有回退的动态路径加载自定义模板

时间:2016-01-22 16:34:23

标签: javascript angularjs

我想在路线

中替换以下代码
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来加载模板,我看到我可以检查文件是否找到,但我不确定最佳解决方案是什么。

因为如果前缀的文件不存在,那么我必须加载没有前缀的文件(后备)。

最好的方法是什么?感谢。

1 个答案:

答案 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

是一项非常棒的构建任务