這是我的第一個問題,所以我希望我可以解釋這種情況 angularJs文檔here討論了將指令templateUrl作爲函數動態返回。還有一個Plunkler現場演示here。如何使用範圍動態地更改angularjs自定義指令templateUrl
.directive('....', function() {
return {
templateUrl: function(elem, attr){
return **.... scope.Somthing ...**;
}
};
});
功能並不需要一個範圍參數,這是主要的問題
的唯一方法,到目前爲止,我發現是與相關的指令範圍動態設置TemplateUrl是這樣
.directive('....', function() {
return {
link: function (scope, element, attrs) {
scope.getTemplateUrl = function() {
return **.... scope.Somthing ...**;
};
},
template: '<ng-include src="getTemplateUrl()"/>'
};
});
另一種解決方案是
.directive('....', function() {
return {
controller: function ($scope) {
$scope.getTemplateUrl = function() {
return **.... scope.Somthing ...**;
};
},
template: '<ng-include src="getTemplateUrl()"/>'
};
});
我的第一個問題是,這看起來像修補程序的問題
我的第二個問題是在指令中生成html字符串。
是否有任何其他方式來存檔?
我會在'ng-include'中使用一個變量而不是函數調用,但是我認爲你所做的完全沒問題。如果您在指令中使用HTML時感到不舒服,您可以始終將該片段保存到文件中。這比注入'$ compile'更簡單,並且自己動態編譯模板。 – adam0101