2

私はknockout.jsライブラリを使用しています。ノックアウトユーティリティ機能を使おうとしてarrayRemoveItemいますが、動作しないようです。これが私のコードです:

JS

function VM()
{
  this.Items = [{id:'1', name:'A'}, 
                {id:'2', name:'B'}, 
                {id:'3', name:'C'}, 
                {id:'4', name:'D'}
               ];

  this.Delete = function(){
    console.log(this.Items);          //before removing

    ko.utils.arrayRemoveItem(this.Items, function(item){
      return item.id == '3';
    });

    console.log(this.Items);          //after removing
  };
}

フィドル

削除ボタンを押した後にコンソールをチェックすると、項目3はアレイから削除されていません。私はここで何が欠けていますか?

4

1 に答える 1

8

arrayRemoveItem、削除するアイテムをのような2番目の引数として受け取るko.utils.arrayRemoveItem(array, itemToRemove)ため、最初にオブジェクトを見つけて、に渡す必要がありますarrayRemoveItem

試す

function VM()
{
  this.Items = [{id:'1', name:'A'}, 
                {id:'2', name:'B'}, 
                {id:'3', name:'C'}, 
                {id:'4', name:'D'}
               ];

  this.Delete = function(){

    var item;
    ko.utils.arrayForEach(this.Items, function(v) {
      if(v.id == '3'){
        item = v;
      }
    });

    console.log(this.Items);
    ko.utils.arrayRemoveItem(this.Items, item);
    console.log(this.Items);
  };
}

ko.applyBindings(new VM());

デモ:フィドル

于 2013-03-23T04:11:45.873 に答える