Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular.js模板解析钩子_Javascript_Angularjs_Templates_Controller - Fatal编程技术网

Javascript Angular.js模板解析钩子

Javascript Angular.js模板解析钩子,javascript,angularjs,templates,controller,Javascript,Angularjs,Templates,Controller,我想知道Angular中是否有一个模板解析钩子,您可以在全局或特定控制器中使用它 我想做的是实现一个特定于语言和设备的(多维)主题加载器,它将动态地获取任何ressource链接(img标记、内联样式)并重定向到特定的资源 例如: 有人实现了一个显示某些图像的模板: <img src="images/my-super-image.jpg"> 你知道怎么做吗?谢谢大家 顺便说一句,我对Angular很陌生,所以如果你能描述得很清楚,那就太好了。再次感谢。您可以使用compile,因为

我想知道Angular中是否有一个模板解析钩子,您可以在全局或特定控制器中使用它

我想做的是实现一个特定于语言和设备的(多维)主题加载器,它将动态地获取任何ressource链接(img标记、内联样式)并重定向到特定的资源

例如: 有人实现了一个显示某些图像的模板:

<img src="images/my-super-image.jpg">
你知道怎么做吗?谢谢大家


顺便说一句,我对Angular很陌生,所以如果你能描述得很清楚,那就太好了。再次感谢。

您可以使用compile,因为angular只允许指令修改DOM,您需要创建一个指令 这里有一个例子

app.directive('myApp', function() {
return {
restrict: 'A',
replace: true,
link: function(scope, element, attrs) {

},
compile: function(tElement, tAttrs, transclude) {
tElement.find('img')[0]['src'] = "theme/en_us/lowres/" + tElement.find('img')[0]       ['src'].split('/')[tElement.find('img')[0]['src'].split('/').length - 1];
 }
 };
 });

也许你可以通过某种方式挖掘
$templateCache
()?我假设某个主题在某个时刻被选中,那么您是否可以在该时刻以编程方式更改模板?这需要预加载
$templateCache
,而不是依赖HTTP GET获取模板,这本身就是一件好事。好的,但据我所知,templateCache只缓存模板,但超出了运行范围,这意味着,如果templateCache中有模板,它已经提供给DOM。我会再次支持DOM注入。对吗?我需要它:1。)角度加载模板2。)钩子:我抓取并编辑模板,并将其返回给角度3。)角度将模板注入到DOM。我不确定整个钩子是否存在。templateCache的工作原理与听起来完全相同,如果缓存中存在给定的模板,则从缓存中使用该模板。您可以覆盖其中的模板。我能想到的唯一其他解决方案是在编译函数中创建一个指令并弄乱模板,但这需要在所有使用模板的地方添加该指令,并且您已经声明不需要这种解决方案。如果将模板添加到$templateCache中,我该如何观察?
$(document).bind('DOMNodeInserted', function(event) {

  if(angular.isDefined(event.originalEvent.originalTarget.innerHTML)) {
    event.originalEvent.originalTarget.innerHTML = String(event.originalEvent.originalTarget.innerHTML).replace('src="images','src="' + imgPath);
  }
});
app.directive('myApp', function() {
return {
restrict: 'A',
replace: true,
link: function(scope, element, attrs) {

},
compile: function(tElement, tAttrs, transclude) {
tElement.find('img')[0]['src'] = "theme/en_us/lowres/" + tElement.find('img')[0]       ['src'].split('/')[tElement.find('img')[0]['src'].split('/').length - 1];
 }
 };
 });