将非字符串属性传递给$ compile函数

时间:2013-10-04 11:35:11

标签: dom angularjs

我制作了一个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以及链接/编译函数,但它并没有让我更清楚。提前致谢! :)

0 个答案:

没有答案