jQuery 克隆和附加功能在 AngularJS 指令中没有按预期工作

Posted

技术标签:

【中文标题】jQuery 克隆和附加功能在 AngularJS 指令中没有按预期工作【英文标题】:jQuery clone and append function isn't working as expected in AngularJS directive 【发布时间】:2016-12-22 02:26:21 【问题描述】:

在我的应用程序中,我正在尝试构建一个购物车。您可以在此 codepen 中查看该应用程序:http://codepen.io/summerfreeze/pen/VjqJYW。它几乎可以工作,但我正在努力完成最后一部分。我想要“添加订单行”按钮在现有订单行下添加另一个订单行。我正在尝试使用 jQuery 来做到这一点:

  myApp.directive('myDirective', function($scope) 
    $scope.addline = function() 
      $(".orderline").clone().appendTo('.main');
    ;
    return addline();
  );

但这似乎不起作用。如果有人能查看代码并告诉我我犯了什么错误,我将不胜感激。

【问题讨论】:

这包含几个语法错误。这是你的完整代码吗? 不要将 jQuery 与 AngularJS 混合使用。我建议你看看docs.angularjs.org/api/ng/directive/ngRepeat。 我同意 @Wawy 作为初学者。其次,检查您要返回的内容。 addline 未定义... 我是 Angular 的新手,我不知道如何在没有 jQuery 的情况下做到这一点。我尝试编写一些代码,但它也没有工作 $SteamDev - addline 如何未定义?这是一个函数。 【参考方案1】:

不确定您为什么使用指令。我从你的代码中删除了它,它可以工作。您仍然有其他错误,但我猜您可以处理这些错误。 这是修改版的链接

new codepen version

   $scope.addline = function()
    $(".orderline").clone().appendTo('.main');
  ;

正如其他人所建议的,为了遵循干净的代码标准,请不要在AngularJS中使用jQuery代码,否则会导致问题。

【讨论】:

我很快就会学会用 Angular 来做这件事,谢谢。您的代码确实有效,但请单击几次,看看它添加了多少 div。它倍增。如何避免? 使用 jquery $(".orderline").first().clone().appendTo('.main');中的“.first()”函数 克隆的输入元素不像原来的那样工作(没有自动完成等) 是的,这就是为什么您需要以 Angular 的方式重新考虑该方法,克隆的元素并不是真正动态的。做更多 Angular 练习/示例,直到您了解基础知识,然后您可以将它们应用到您的项目中。 codepen.io/summerfreeze/pen/VjqJYW 试图在 Angular 中做到这一点,我有点迷路了【参考方案2】:

据我所知,您不应该附加到#main,而是附加到#main div[0]

【讨论】:

以上是关于jQuery 克隆和附加功能在 AngularJS 指令中没有按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 不会附加在文档就绪时声明的克隆

如何将jquery克隆行附加到隐藏字段

jquery克隆div并将其附加在特定div之后

克隆后的jQuery UI datepicker分配

为啥 JQUERY 克隆函数并在其上附加一个 id 并确认电子邮件值?

jquery克隆拖动