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

Wes*_*ger 2 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 ^
Run Code Online (Sandbox Code Playgroud)

服务:

 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'
   )
Run Code Online (Sandbox Code Playgroud)

控制器:

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

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

Edm*_*son 5

如果$ scope.phrases是一个数组,你应该能够做到这一点

ng-click="deletePhrase(phrase.id, $index)"
Run Code Online (Sandbox Code Playgroud)

并更改删除方法

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

我不确定语法,因为我不习惯它.但是你明白了.