2017-08-22 6 views
0

オブジェクトからプロパティを削除する必要がある子コンポーネントがあります。角1/Javascript - lodashの代わりにオペレータを省略して削除する

は通常、それは、このコードで動作するはずLodashを使用して:current.objモデルは、親コンポーネント

までにマウントされないだけで

this.current.obj = omit(this.current.obj, ['sellerSupportWeb', 'sellerSupportAgency', 'sellerSupportAgent']) 

しかし、私は持つオブジェクトからプロパティを削除した場合ちょうどオペレータdeleteそれは

delete this.current.obj.sellerSupportAgency 
    delete this.current.obj.sellerSupportWeb 
    delete this.current.obj.sellerSupportAgent 

に動作しますが、削除や省略と同じ仕事をしていません別の代替ありませんか?

私は助けることができるのか分かりませんが、私はそれに乗るように私は親コンポーネント(親コンポーネント)を呼び出すのですが、省略して動作するためには、私は別の解決策を探していますcurrent.obj

for (const [index] of this.current.parent.items.entries()) { 
    this.current.parent.items[index] = omit(this.current.parent.items[index], ['sellerSupportWeb', 'sellerSupportAgency', 'sellerSupportAgent']) 
} 
+0

なぜフランス語になるのですか? – quirimmo

+0

が変更されています。 –

+0

それは? 「私はあなたの人生を忘れていましたが、私はあなたの人生を忘れてしまいました。 current.obj' – quirimmo

答えて

1

私が正しく理解している場合は、コンポーネントとその親の間で共有されるオブジェクトを変更する必要があります。オブジェクトは親コンポーネントの配列にあるため、ng-repeatステートメントを使用していると仮定します。親コンポーネントのテンプレートでコンポーネント定義やインスタンス化を共有していないため、わかりません。

ローカルオブジェクト参照(omit)を変更すると、親コンポーネントの配列は変更されません。ローカルオブジェクトを(削除して)適切に変更すると、ローカル変数は引き続き親配列内のオブジェクトを参照し、(同じオブジェクトであるため)両方の場所で変更されます。

簡単に言えば、(親で)配列を変更するか、ローカルオブジェクトからフィールドを削除するかを選択する必要があります(これを行うには、deleteが唯一の方法です)。前者の方がより角張っていて、特に、「&」型のイベントハンドラを使用して、特定のフィールドをオブジェクトから削除することを親コンポーネントに伝えている場合はそうです。あなたは次のようなことをすることができます:

angular.component(... 
    bindings: { 
     filterObjectHandler: '&onFilterObject' 
(...) 

this.filterObjectHandler(['sellerSupportWeb', 'sellerSupportAgency', 'sellerSupportAgent']); 

またはそういうものです。 AngularJS 1.5+のコンポーネント構造については、興味深い記事記事hereがあります。

var obj = this.current.obj; 

['sellerSupportWeb', 'sellerSupportAgency', 'sellerSupportAgent'].forEach(function(field) { 
    delete obj[field]; 
}); 

かさえ:あなただけのフィールドの配列でワンライナーを含む方法でフィールドを削除する方法をしたい場合は

しかし、あなたは、この使用することができ

['sellerSupportWeb', 'sellerSupportAgency', 'sellerSupportAgent'].reduce(function(obj, field) { 
    delete obj[field]; 
    return obj; 
}, this.current.obj); 
関連する問題