2016-11-16 18 views
2

我正在尝试制作一个角度指令,该指令基于放置在指令上的属性呈现动态内容url。例如:将呈现的字符串传递到Angular指令

指令:

angular 
    .module('myModule') 
    .directive('myContent', directive); 

function directive() { 
    return { 
     replace: true, 
     templateUrl: function (elem, attrs) { 
      return attrs.contentUrl; 
     } 
    }; 
} 

HTML:

<div my-content content-url="url/to/my-content.html"></div> 

但是我想对于content-url属性由控制器的字符串进行填充。所以我们可以说该控制器使用名为“家”中的“controllerAs”语法,我想的HTML阅读:

<div my-content content-url="{{home.myContent.url}}"></div> 

但是内指令的templateUrl功能,contentUrl属性被逐字发送为“ {{home.myContent.url}}”。如何在运行templateUrl函数之前获取此值以进行评估?或者,有没有更好的方法可以从指令中获得简单的动态内容?

+0

应尽可能通过adding'scope:{conentUrl: '='}'你的指示功能,并在HTML中使用它时省略大括号。然后你需要$在指令中观察$ scope.contentUrl的值。另外,你也应该能够在指令的链接函数中使用$ attr。$ observe,尽管我没有太多的经验。谷歌是你的朋友:-) – cYrixmorten

+2

听起来像你试图重新创建ng-include本身已经做的角色。除非你为了学习的目的而重新创建它,否则我只是使用ng-include。否则,查看源代码以查看它们是如何执行的可能不是一个坏主意。 –

回答

0

答案由@ crhistian - 拉米雷斯提供:

只需使用NG-包括

<div ng-include="vm.myContent.url"></div> 
相关问题