在Angular指令中获取原始的被转换内容

时间:2013-11-17 15:16:43

标签: javascript angularjs angularjs-directive

是否有可能以编程方式获取Angular.js指令中的原始被盗内容?

我正在尝试创建一个editable指令,该指令可以添加到任何div,允许用户使用自定义角度指令编辑HTML内容。 (设计目标是避免在应用程序中添加无限配置GUI功能,因为高级用户只需编辑HTML ...),例如:

 <div editable>
      <h1>Lorem Ipsem</h1>
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p>
      <clock>A custom directive</clock>
 </div>

以Plunker为例(http://plnkr.co/edit/nIrr9Lu0PZN2PdnhQOC6?p=preview):

  • 单击实心灰色栏上的编辑图标以打开编辑器
  • 输入带有标签的任何格式良好的HTML: (例如<h1>A title</h1><p>some content</p><clock></clock>
  • 点击“应用”

到目前为止我喜欢这个:

  • 可以添加到任何div
  • 它可以包含嵌套的自定义指令,使用$ compile
  • 它包含已转换的内容

我还想不通:

  • 如何获取原始的已转换内容以初始化textarea

在编译函数中,$transclude似乎包含mydirective的模板,并且使用控制器函数,$transclude包含事物更改后的编译后内容,指令呈现等等。

1 个答案:

答案 0 :(得分:6)

您可以使用transclude功能:

.directive('editable', function() {
    return {
       transclude: true,
       link: function(scope, element, attrs, ctrl, transclude) {
           transclude(scope, function(clone) {
               // clone is your transluded content
           });
       }
    };
});