2016-11-16 17 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> 
相關問題