【问题标题】:TypeError: Cannot read property 'insertBefore' of nullTypeError:无法读取 null 的属性“insertBefore”
【发布时间】:2015-01-30 09:37:50
【问题描述】:

我有一个这样的数组

var users = [
    { 'id': 1, 'name': 'user name', 'age': 25, ... }, 
    { 'id': 2, 'name': 'user name', 'age': 25, ... } 
    ...
]

我使用ng-repeat 将其显示为列表。像这样。

<li ng-repeat="user in users">
    {{user.name}}
    <a href="#" ng-click="UserCTRL.remove_user(user.id)">remove user</a>
</li>

我使用 jquery 可排序使li 可排序。 sortable 有效,remove_user 有效。但是当我将最后一个 li 移动到上面的任何位置时,它会一直工作,直到我尝试删除用户然后我得到错误。

感谢您的帮助。错误是什么意思?

【问题讨论】:

  • stackoverflow.com/questions/6524978/… 看看这个,看来你要锁定列表了。
  • 你为什么使用jQuerysortable? AngularJS 已经内置了排序功能。见docs.angularjs.org/api/ng/filter/orderBy
  • @fdomig 我希望用户根据自己的喜好对列表中的用户进行排序(通过拖放)。然后我保存新位置。
  • @HenkJansen 我在没有 angularjs 的情况下尝试了它。我认为 angularjs 正在抛出错误

标签: javascript jquery angularjs jquery-ui angularjs-ng-repeat


【解决方案1】:

我不知道你是否解决了这个问题,因为这个问题是 2 年前提出的。我碰巧和你一样得到了错误,我猜错误可能是Cannot read property 'insertBefore' of null。在ng-repeat 中添加包裹层div 以防止角度元素被弄乱,并通过使用div 刚刚添加的列表对其进行排序,如下所示应该可以防止此错误:

<li ng-repeat="user in users">
    <div>
        {{user.name}}
        <a href="#" ng-click="UserCTRL.remove_user(user.id)">remove user</a>
    </div>
</li>

【讨论】:

    【解决方案2】:

    此错误也可能由于浏览器中安装的扩展程序而发生。在 chrome 浏览器中启用“Dark Reader”扩展时,我遇到了同样的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-25
      • 1970-01-01
      • 1970-01-01
      • 2020-01-29
      • 1970-01-01
      • 2022-01-12
      • 2021-12-04
      • 2021-12-17
      相关资源
      最近更新 更多