【问题标题】:no array operation allowed on element parameter of link function不允许对链接函数的元素参数进行数组操作
【发布时间】:2015-12-11 05:15:40
【问题描述】:
link: function(scope, element, attrs, model) 

这是一个角度指令的链接函数。

当我查看元素对象时,它具有以下结构

[<input google-place type=​"text" id=​"existingAreas" class=​"form-control      ng-isolate-scope" place=​"newProperty.address.selectedArea" country=​"in">​]

console.log(element) 给出了这个

R[1]
0: input#existingAreas.form-control.ng-isolate-scope
length: 1
__proto__: Object[0]

它看起来像一个数组。但是当我尝试对它进行像pop这样的数组操作时,它会出错。虽然对元素 [0] 的引用有效。

我无法理解为什么会这样

【问题讨论】:

    标签: javascript arrays angularjs angular-directive


    【解决方案1】:

    查看the documentation我们可以看到:

    element 是该指令匹配的 jqLit​​e 包装元素。

    jQuery(以及 jqLit​​e)返回所谓的 array-like 对象,这意味着它们具有数字索引属性和长度属性。这些看起来像数组,可以通过call 函数与一些数组函数一起使用,但它们不是真正的数组,因此没有普通的数组方法。

    要获取最后一个元素,你可以简单地做

    var last = element[element.length-1];
    

    【讨论】:

      【解决方案2】:

      这是一个对象,你不能对它进行数组操作。如果您需要从对象中删除键,请尝试

      delete element[0]
      

      delete element.key
      

      delete element['key']
      

      【讨论】:

      • 为什么你认为这不是数组的对象?我不想删除任何东西。我想在不使用幻数的情况下获取最后一个元素
      猜你喜欢
      • 2019-12-20
      • 2013-06-03
      • 2014-05-14
      • 1970-01-01
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-19
      • 2020-08-21
      相关资源
      最近更新 更多