删除服务器上的资源项时从数组中删除资源项

时间:2014-08-06 16:01:19

标签: angularjs

当我对服务器资源中的项目执行删除操作时,它不会删除视图中的项目。

观点:

%ul(class="phrases")
  %li(ng-repeat="phrase in phrases")
    %p.id {{phrase.id}}
    %p.content {{phrase.content}}
    %p.author {{phrase.author}}
    %button(ng-click="deletePhrase(phrase.id)") Delete ^

服务:

 wrmcServices.factory 'Phrase', ($resource) ->
   $resource('api/v1/phrases.json',{},
     query:
       method:'GET'
       params:
         phraseId:'phrases'
       isArray:true
   )

 wrmcServices.factory 'Phrase', ($resource) ->
   $resource('api/v1/phrases/:id.json',{id: "@id"},
     update:
       method:'PUT'
     delete:
       method: 'DELETE'
   )

控制器:

wrmcControllers.controller 'phrasesCtrl', ($scope, Phrase) ->
  $scope.phrases = Phrase.query()
  $scope.deletePhrase = (phraseId) ->
    Phrase.delete({id: phraseId}, ->
      $scope.phrases.splice(phraseId,1)
    )

我的临时修复是在deletePhrase函数的末尾放置$ scope.phrases = Phrase.query(),但我不喜欢页面刷新的方式。不应该只是从新视图中删除项目,因为我将其从数组中删除。

1 个答案:

答案 0 :(得分:5)

如果$ scope.phrases是一个数组,你应该可以这样做

ng-click="deletePhrase(phrase.id, $index)"

并更改删除方法

$scope.deletePhrase = (phraseId, index) ->
  Phrase.delete({id: phraseId}, ->
    $scope.phrases.splice(index,1)
  )

我不确定语法,因为我不熟悉它。但是你明白了。