【问题标题】:Element not removed from collection with .splice(index, 1)未使用 .splice(index, 1) 从集合中删除元素
【发布时间】:2015-01-29 18:28:44
【问题描述】:

我有一个$scope.inventories,其中包含我可以选择的库存。 我想在选择某些内容时从inventories 中删除选定的项目,但这不会发生。

代码如下:

  $scope.select = (inventory, index) ->
    url          = '/tasks/select_inventory'
    inventory_id = inventory.id
    $http(
      method: 'POST'
      url: url
      params: { task_id: task_id, inventory_id: inventory_id }
    ).success((data, status) ->
      $scope.selected_inventories.push inventory
      $scope.inventories.splice(index, 1)
      return true
    ).error (data, status) ->
      alert('failed')
      return

库存模型

angular.module('orwapp').factory 'Inventory', ['$resource', ($resource) ->

  Inventory = $resource "/api/v1/inventories/:id",
                      { id: "@id" }

  return Inventory
]

Rails API 以 json 格式返回 @task。那样行吗? render json: @task

为什么$scope.inventories.splice(index, 1) 没有按预期工作?

【问题讨论】:

  • 据我所知,这段代码应该工作。您是否正确使用 $scope.apply() 来更新范围?如果你console.log($scope.inventories) 紧跟在你.splice 之后,你会看到什么?
  • @DanielMa,它说:[Resource,Resource,Resource,Resource,$promise:Promise,$resolved:true]0:Resource1:Resource2:Resource3:Resource$promise:Promise$resolved:truelength : 4__proto__: 数组[0]
  • $scope.inventories 是数组还是键控对象?
  • 数组,我想。它是这样填充的: $scope.inventories = Inventory.query(task_id: task_id)

标签: javascript angularjs coffeescript


【解决方案1】:

这是一个错字吗,看起来像一个额外的开放括号“(”在数据之前

).success((data, status) ->

【讨论】:

    猜你喜欢
    • 2021-05-04
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 2012-06-23
    • 2021-05-05
    • 2014-07-30
    相关资源
    最近更新 更多