我制作了一个html-renderer指令,它接受一个字符串并将其转换为html元素:
.directive('htmlRenderer', function($compile) {
var linker = function(scope, element, attrs) {
scope.$watch('template', function() {
element.html(scope.template);
$compile(element.contents())(scope);
console.log("Template", scope.template);
});
};
return {
restrict: 'E',
replace: true,
link: linker,
scope: {
template: '@'
}
};
});
我的问题是,当将对象作为属性传递时,我得到'DOM异常5':
<html-rendered template='<foo x-data={{ neededData }}/>'/>
在我的控制器中,我有:
function Controller($scope) {
$scope.neededData = { text: 'Foo needs this for something' };
}
这是一个小提琴:http://jsfiddle.net/9U7CJ/2/
我遇到过这个问题:Getting INVALID_CHARACTER_ERR: DOM Exception 5 这几乎意味着我做错了什么。可悲的是,我对DOM的了解并不多,所以我几乎被卡住了。
我已经阅读并重新阅读了Angular Docs for $ compile以及链接/编译函数,但它并没有让我更清楚。提前致谢! :)