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);
});
}
}
}]);
謝謝。你能否建議我如何動態處理用戶交互?比如如何傳遞可以從dynamicComponent模板調用的方法。 –
您可以簡單地將ng-click添加到您的模板。該函數可以在範圍內聲明。 – Alborz
雅,我知道,但我的問題是如何在兩個單獨的複選框上調用兩種不同的方法。雖然這兩個複選框將只從一個模板渲染,所以我怎麼能通過該方法,我應該在哪裏定義 –