$ templateCache是​​否仅适用于URL,还是可以使用它来获取HTML文件?

时间:2017-09-06 10:28:05

标签: angularjs

我正试图让这个命令起作用......

var template = $templateCache.get('nameOfTemplate.html');

但无论我做什么,我都会得到一个未定义的结果。

    var test = $templateCache.get('./templateBase.html')
    console.log("TEMPLATE: " + test)
    var test = $templateCache.get('/templateBase.html')
    console.log("TEMPLATE: " + test)
    var test = $templateCache.get('templateBase.html')
    console.log("TEMPLATE: " + test)
    var test = $templateCache.get('index.html')
    console.log("TEMPLATE: " + test)
    var test = $templateCache.get('app.js')
    console.log("TEMPLATE: " + test)

但我得到的只是......

TEMPLATE: undefined
TEMPLATE: undefined
TEMPLATE: undefined
TEMPLATE: undefined
TEMPLATE: undefined

这是因为这只适用于URL'

我的templateBase.html与我的控制器位于同一文件夹中。

我想要的只是阅读内容并放入变量。

我刚试过

test = require('./templateBase.html');
console.log("require: " + test)

有效,但require在整个应用程序加载时读取模板,因为我有很多模板,这不是一个很好的解决方案。

1 个答案:

答案 0 :(得分:2)

您可以使用$templateCache.get()加载已缓存的项目。我保证在您尝试加载模板时不会缓存模板 - >这导致undefined。你说:All I want is to read the content and put into a variable.。您可以使用$http加载文件,例如 demo fiddle

$http.get('./template.en.html').then(function (result) {           
  var data = result.data;
  console.log(data);
});

缓存的不同方法

此示例还会将您的模板存储在$templateCache中以供日后使用。

$http.get('./template.en.html').then(function (result) { 

  //put template into cache
  $templateCache.put('myTemplateName', result.data);

  //fetch result and log it
  var data = result.data;
  console.log(data);

});

有关$templateCache documentation website上的模板缓存的更多详细信息。