javascript - 在 Angular 指令中获取原始嵌入的内容

标签 javascript angularjs angularjs-directive

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

我正在尝试创建一个 editable可以添加到任何 div 的指令,允许用户使用自定义 Angular Directive(指令)编辑 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 的模板,以及 Controller 功能,$transclude包含更改后的编译后内容、呈现的指令等。

最佳答案

你可以使用transclude函数:

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

关于javascript - 在 Angular 指令中获取原始嵌入的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20032347/

相关文章:

javascript - $digest 渲染 ng-repeat 作为注释

javascript - 日期的 Angular ng-pattern 在 IE9 上不起作用

javascript - JavaScript 的数组过滤方法在 IE 7 中不起作用

javascript - 重新加载并检查用户是否使用 angularjs 连接到 phonegap

javascript - 访问 "calling scope"和奇怪的行为

javascript - 在angularJS中使用scope.watch时如何防止函数的第二次运行

javascript - AngularJS 指令传递点击操作或执行 ui-router 状态更改

javascript - 避免/禁用自动跳转到输入字段

javascript - 如何从 jquery 对象中检索属性值?

javascript - Angular2 路由事件