2014-07-14 41 views
1

我想獲得幫助以獲取templateUrl中的值。我已經經歷類似的問題,這樣的Set templateUrl base on attribute in directive自定義指令屬性值未獲取到templateUrl回調函數

我的目標

我想設置一個屬性,而從HTML調用指令。該屬性將具有來自json對象的動態值。我想在這個指令的templateUrl函數中使用這個屬性。

您可以在這裏看到,瞭解我的問題更多 - jsfiddle

我想根據屬性值來呈現選框​​或模板。

請幫忙。

我知道ng-include方法所以請建議備用方案。

回答

2

scope在tempalteUrl函數中無法訪問。在link函數中,您可以訪問模板Url以及範圍。我改變了你的代碼here

angular.module("myApp",[]).controller("myCtrl",['$scope',function($scope) { 
    $scope.dynamicAttr = [ 
     { 
      style:"stdRadio", 
      label:"First Box" 
     }, 
     { 
      style:"stdCheck", 
      label:"Second Box" 
     } 
    ]; 
}]).directive("dynamicComponent",['$compile','$http','$templateCache',function($compile, $http,$templateCache) { 
    return { 
     scope:{ 
      sourceData:"=sourceData" 
     }, 
     restrict:"E", 

     link: function (scope, element, attrs) { 
      $http.get((scope.sourceData.style == "stdRadio")?"dynamicComponentRadio.html":"dynamicComponentCheckBox.html", {cache: $templateCache}).then(function(data){ 

     element.html(data.data); 
     return $compile(element.contents())(scope); 
      }); 

     } 
    } 
}]); 
+0

謝謝。你能否建議我如何動態處理用戶交互?比如如何傳遞可以從dynamicComponent模板調用的方法。 –

+0

您可以簡單地將ng-click添加到您的模板。該函數可以在範圍內聲明。 – Alborz

+0

雅,我知道,但我的問題是如何在兩個單獨的複選框上調用兩種不同的方法。雖然這兩個複選框將只從一個模板渲染,所以我怎麼能通過該方法,我應該在哪裏定義 –

相關問題