使用 angularjs 添加新元素到 DOM 中并不会启动它

2023-12-31

进一步解释,

我正在使用 angular-summernote 并使用指令在 DOM 内插入新的所见即所得编辑器实例。然而,当我将它插入到 DOM 中时,新编辑器不会加载,可能是因为 init 已经被触发了。

这是我正在使用的指令,以及有效的 jsFiddle,它does插入编辑器标签但是它does not生成/启动另一个编辑器:JSFiddle http://jsfiddle.net/thedarklord1939/pLL0pxqb/2/

angular.module('summernoteDemo', ['summernote'])
    .directive('addSummernote', function () {
    return function (scope, element, attrs) {
        element.click(function () {
            element.parent().find(".summernotes").append('<summernote></summernote>');
        })
    }
})

我怎样才能让它“监听”新的插入并正确加载编辑器?有一个更好的方法吗?我尝试过使用 $watch 和 $compile 但恐怕我没有正确使用它们。时间


你想要做的很好,元素被添加到 DOM 中。但问题是,添加的元素需要 Angular 的关注,因为它有一个指令,并且需要以这种方式呈现。因此,您需要使用以下命令重新编译要添加的元素$compile service https://docs.angularjs.org/api/ng/service/%24compile。因此,将元素添加到 DOM 后,您基本上是在编译该元素以呈现指令,并在此过程中为其附加相应的范围。

.directive('addSummernote', ['$compile', function ($compile) {

    var template = '<summernote config="options" on-image-upload="imageUpload(files, editor, welEditable);"></summernote>';

    return function (scope, element, attrs) {

        element.click(function () {
            var elm = angular.element(template); //Get the element
            element.parent().find(".summernotes").append(elm); //Append it to DOM
            $compile(elm)(scope); //Now compile it to render the directive.            
        });

 }]);

Demo http://jsfiddle.net/1rsvbjzj/

您可以将整个按钮渲染为指令,而不是手动绑定事件(替换选项,以便标记上的指令上的属性也将在渲染的元素中可用。)

.directive('addSummernote', function ($compile) {

        var template = '<summernote config="options" on-image-upload="imageUpload(files, editor, welEditable);"></summernote>';

        return {
            restrict:'E',
            replace:true,
            template: '<input  type="submit"  value="Add 1+ Editor" ng-click="addEditor()">',
            link: function (scope, element, attrs) {

            //Click function handler 
            scope.addEditor = function(){
                   var elm = angular.element(template);
                   element.parent().find(".summernotes").append(elm);
                   //Or just do   element.prev().append(elm);
                   $compile(elm)(scope);    
              }

            }
        }
});

并用作:-

<add-summernote  id="append" class="btn bg-blue full-width" style="margin-top: 15px;"></add-summernote>

Demo http://jsfiddle.net/1rsvbjzj/5/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 angularjs 添加新元素到 DOM 中并不会启动它 的相关文章

  • Javascript DOM setAttribute 在函数调用中不起作用

    我有一个带有输入元素的 HTML 文件 我希望向其中添加一个名为 valid fieldset011 的新属性 该属性用作 AngularJS 验证器的链接 输入元素具有属性 id fieldset011 如果我使用以下脚本 包含在脚本标签
  • 定义 js-xlsx 单元格范围

    我正在尝试使用 js xlsx 读取 Excel 值 我可以使用以下代码从工作簿工作表中获取单元格值 if typeof require undefined XLSX require xlsx var workbook XLSX readF
  • 如何防止 gulp-notify 破坏 Windows 中的 gulp-watch?

    我正在使用吞咽通知 https www npmjs org package gulp notify插入 这是我如何在 gulpfile js 中实现它的示例 您可以看到我也在使用 gutil 和 livereload 我不知道它们是否发挥任
  • html 表格单元格的条件格式

    是否有现成的解决方案可以对 HTML 表格进行条件格式设置 通过条件格式 我更感兴趣的是根据该列或其他列 在同一个表中 的值 数字 将不同的颜色作为单元格背景 类似于我们在 Excel 条件格式 gt 色阶 gt 红黄绿中的内容 我想在通过
  • 限制可选 DOM 复选框

    我试图限制用户可以选择的复选框数量 这些复选框是为数组中的每个项目生成的 DOM 输入对象 我目前对此没有运气 因此非常感谢任何帮助 谢谢 在这里小提琴 http jsfiddle net vVxM2 222 http jsfiddle n
  • 在鼠标光标位置添加 cytoscape 节点

    我想在画布上的单击事件上的鼠标箭头位置添加一个 cytoscape 节点 我怎样才能做到这一点 我的方法 效果不太好 我可以通过单击创建一个节点 但无法确保创建的节点的位置位于我单击的位置 使用这样的东西 cy click function
  • 使用文件 API 将资源加载到 Three.js 中

    我想创建导入 3D 模型以在浏览器中查看的功能 方法是使用File API http www html5rocks com en tutorials file dndfiles Three js 加载器在我托管的文件上运行良好 我的理解是加
  • jQM / jquery-collagePlus 使用问题

    我正在使用 jQM 构建应用程序 并且尝试使用 jquery collagePlus http ed lea github io jquery collagePlus http ed lea github io jquery collage
  • 为什么 Web Worker 性能在 30 秒后急剧下降?

    我正在尝试提高在网络工作人员中执行时脚本的性能 它旨在解析浏览器中的大型文本文件而不会崩溃 一切都运行得很好 但我注意到使用网络工作者时大文件的性能存在严重差异 于是我做了一个简单的实验 我在同一输入上运行脚本两次 第一次运行在页面的主线程
  • 在管道中重用变量的功能方式

    在 javascript 和 typescript 中与 Ramda 一起使用函数式编程 我经常发现自己编写如下代码 const myFun c gt const myId c id const value pipe getAnotherO
  • 获取点击的的DOM路径

    HTML div class lol a class rightArrow href a div 伪代码 rightArrow click function rightArrowParents this dom dom is the pse
  • 如何打开弹出窗口并用父窗口中的数据填充它?

    如何使用 JavaScript jQuery 使用父页面中 JS 变量的数据填充弹出窗口 在我的示例中 我有一个文件名数组 我在父窗口中最多列出五个 如果还有更多 我想提供一个链接来打开弹出窗口并列出数组中的每个帖子 因此 如果我打开一个包
  • 如何处理requireJs超时错误?

    我正在使用 require js 作为加载框架编写一个移动混合应用程序 我遇到加载错误的问题 我想做的是在设备离线且无法下载在屏幕上显示地图所需的 google 地图 API 脚本时设置后备解决方案 我得到的只是 Uncaught Erro
  • Node.js 未处理的“错误”事件

    我编写了一个简单的代码并将其保存在文件 try js 中 var http require http var makeRequest function message var options host localhost port 8080
  • Ember Data 中出现“超出最大调用堆栈大小”错误的原因可能是什么?

    Ember 发布新版本 3 6 0 后 我开始在控制台中收到错误 rsvp js 24 未捕获 RangeError 超出最大调用堆栈大小 在 WeakMap get 在 getCacheFor metal js 25 在 Computed
  • JavaScript 数组扩展语法的时间复杂度是多少?

    我想知道在 JavaScript 中使用数组扩展的时间复杂度是多少 是线性 O n 还是常数 O 1 下面的语法示例 let lar Math max nums 传播称为 Symbol iterator 有关对象的属性 对于数组 这将迭代数
  • 使用 AngularJS 多部分表单数据将文件上传到 Google Cloud Storage

    我正在尝试使用 AngularJS 中指定的多部分方法将图像文件上传到 Google Cloud Storagehttps cloud google com storage docs json api v1 how tos upload m
  • mozilla pdf.js 没有全视图

    我喜欢这个 pdf 查看器https github com mozilla pdf js https github com mozilla pdf js Demo http mozilla github com pdf js web vie
  • 如何使用 jQuery 或 JavaScript 聚焦 或 标签?

    for var i 0 i
  • 强制输入数字小数位

    我想强制

随机推荐

  • 使用 Jasypt 和 PBKDF2WithHmacSHA1 密钥进行基于密码的 AES 加密

    我正在工作中实现加密机制 安全人员的要求如下 使用 PBKDF2WithHmacSHA512 秘密密码 256 位盐和最少 20000 次迭代创建 256 位密钥 盐应该使用 SecureRandom getInstance SHA1PRN
  • Java 接口是否可以定义为只有 Enum 可以扩展它?

    我想这样做并没有什么特别的原因 我只是想知道这是否可能 如果有帮助的话 这是一个可以使用它的虚构情况 想象一下一种类型Enum它用作只读数据源 这样每个值Enum包含不同的内容 这Enum实施Readable 现在 假设我们想要一个读取所有
  • 如何处理持久的 http 请求

    我有一个持久的http请求 后端有大量计算 目前 这一切都是同步的 而服务器计算机 浏览器看不到输出 结果 一段时间后 连接断开 浏览器中显示超时错误 我想立即向浏览器返回一些信息 并让它等待结果 如何实现这一目标 请注意 Java 后端是
  • 多个具有相同名称的单选按钮组

    我已经继承了一个动态创建 HTML 的复杂应用程序 问题是 前面的人不知道单选按钮的 名称 属性实际上是组关联 通过以下标记 有什么方法可以将它们分为两组 div div
  • 列出 .gitignore 不忽略的所有文件

    我想列出 gitignore 未忽略的所有文件 即我的存储库的所有源文件 ag默认情况下效果很好 但我不知道有一种方法可以在不安装其他软件的情况下工作 git ls files没有选项几乎可以很好地工作 但没有考虑已修改 创建的文件 例如
  • 如何安装 NODE_MODULE_VERSION 46

    如何使用 NODE MODULE VERSION 46 安装 Node js 版本 我一直遇到 NODE MODULE VERSION 不匹配的情况 并且重新编译没有帮助 因此切换节点版本可能会更容易 基本上 我一直遇到这样的情况 Warn
  • ini_set('max_execution_time', 0) 是一个坏主意吗?

    有没有充分的理由不设置 PHP 配置变量max execution time http www php net manual en info configuration php ini max execution time to 0 一位同
  • 禁用 Wifi 时未收到 NSD 设备丢失消息

    我已经使用编写了一个示例应用程序NSD正如所解释的here http developer android com training connect devices wirelessly nsd html 该应用程序工作正常 它会发现服务 解
  • 如何创建使用 Gradle 构建的 Kotlin 项目?

    我正在尝试创建一个新的 Kotlin 项目 该项目使用 IntelliJ IDEA Ubuntu 16 04 上的 2016 2 5 通过 Gradle 构建 当我这样做时 我立即收到一条错误消息 这就是我正在尝试的 从欢迎屏幕中选择 创建
  • 在 NET 6.0 中使用 HttpClient 的最佳实践

    我正在为下一个任务寻找最佳实践解决方案 我使用 ASP NET Core 6 0 我创建了一个可与公共 API 配合使用的 SDK SDK通过Http请求与API进行通信 我用HttpClient类来发出http请求 我的目标是构建一个 N
  • 电子邮件 SMTP 验证器

    我需要发送数百封新闻通讯 但想首先检查服务器上是否存在电子邮件 它被称为SMTP http en wikipedia org wiki Simple Mail Transfer Protocol验证 至少我是这样认为的 基于我在互联网上的研
  • 更新事物列表而不触及每个条目

    我在数据库中有一个用户应该能够订购的列表 itemname order value int salad 1 mango 2 orange 3 apples 4 从数据库加载时 我简单地order by order value 通过拖放 他应
  • 从数据框列名称中删除后缀

    我试图从数据框中的所有列中删除后缀 但收到错误消息 任何建议 将不胜感激 df pd DataFrame np random randint 0 10 size 10 4 columns list ABCD df add suffix x
  • 具有动态 ID 的骨干视图

    我刚刚意识到我误解了el的属性Backbone View 基本上我的观点需要动态id基于其模型属性的属性 我认为我可以正常工作 因为我只是在模板中指定了它 然而 我意识到 Backbone 实际上所做的是将这个编译后的模板放入另一个元素中
  • 无法让 jquery.jqgrid 4.4.1 在 ASP.NET MVC 中工作

    我一直在努力让 jquery jqgrid 4 4 1 在我的 ASP NET MVC 4 解决方案中工作 我使用 NuGet 将 jquery jqgrid 4 4 1 安装到我的项目中 我试图在我的页面中插入一个非常简单的网格 只是为了
  • 如果我写了 system.out.println(); 则找不到包系统;

    我正在写一个简单的程序 class Demo public static void main String args system out println Hello 编译时它给出了error package system not foun
  • 如何将 xarray 数据集展平为一维 numpy 数组?

    有没有一种简单的方法可以将 xarray 数据集展平为单个一维 numpy 数组 例如 展平以下测试数据集 xr Dataset a xr DataArray data 10 11 12 13 14 coords x 0 1 2 3 4 d
  • 将 scipy 稀疏 csr 转换为 pandas?

    我已经用过 sklearn preprocessing OneHotEncoder 转换一些数据的输出是scipy sparse csr csr matrix如何将它与其他列一起合并回原始数据框 我尝试使用pd concat但我得到 Typ
  • 在 Octave 中读取 CSV 时出现问题

    我有一个 csv 文件 但无法在 Octave 上读取它 在 R 上 我只需使用下面的命令 一切都可以正常读取 myData lt read csv myData csv stringsAsFactors FALSE 但是 当我转到 Oct
  • 使用 angularjs 添加新元素到 DOM 中并不会启动它

    进一步解释 我正在使用 angular summernote 并使用指令在 DOM 内插入新的所见即所得编辑器实例 然而 当我将它插入到 DOM 中时 新编辑器不会加载 可能是因为 init 已经被触发了 这是我正在使用的指令 以及有效的