我正在尝试通过范围变量传入模板的 url。范围不会改变,因此模板不需要根据它进行更新,但目前范围变量始终未定义。
<div cell-item template="{{col.CellTemplate}}"></div>
理想情况下,该指令是:
.directive("cellItem", ["$compile", '$http', '$templateCache', '$parse', function ($compile, $http, $templateCache, $parse) {
return {
scope: {
template: '@template'
},
templateUrl: template // or {{template}} - either way
};
}])
然而,这不起作用。我已经尝试了很多不同的排列来完成相同的概念,这似乎是最接近的,但它仍然不起作用。
.directive("cellItem", ["$compile", '$http', '$templateCache', '$parse', function ($compile, $http, $templateCache, $parse) {
return {
scope: {
template: '@template'
},
link: function (scope, element, attrs) {
var templateUrl = $parse(attrs.template)(scope);
$http.get(templateUrl, { cache: $templateCache }).success(function (tplContent) {
element.replaceWith($compile(tplContent)(scope));
});
}
};
}])
我也尝试过使用 ng-include,但这也不会在编译之前评估范围变量。CellTemplate 值来自数据库调用,因此在评估之前完全未知。任何让这项工作的建议将不胜感激!
编辑:我正在使用 angular 1.0.8 并且无法升级到更新版本。