2016-06-08 11 views
0

Ich benutze Vue.js und ich frage mich, wie ich eine Javascript-Eigenschaft auf dynamische Weise aufrufen kann. Lassen Sie uns sagen, dass ich ein Argument an eine Funktion wie diese passieren:Verweise auf eine JavaScript-Eigenschaft mit einem dynamischen Namen

filter: function(items) { 
    this.countriesToFilter.splice(index, 1); 
}, 

Wie kann ich die Länder in meinem this.countriesToFilter Aufruf in einer dynamischen Art und Weise ersetzen, so habe ich am Ende mit im wesentlichen nach oben:

this.itemsToFilter.splice(index, 1); 

Antwort

1

Vielleicht so?

filter: function(items) { 
    var whatToFilter = items + 'ToFilter'; 
    this[whatToFilter].splice(index, 1); 
}, 
1

Die Antwort ist ja.

var name = "itemsToFilter"; 
var myArray = eval("this." + name); 

// use myArray 

Sie auch eine Sicherheitsprüfung hinzufügen können, so dass Sie nicht splice auf undefined

rufen Sie
if (typeof myArray != 'undefined') { 
    myArray.splice(index, 1) 
} 
1

Die einzige Art, wie ich diese Arbeit vorstellen kann, ist, wenn Sie eine Zeichenfolge an die Funktion übergeben, und interpolieren diese Zeichenfolge in die Objekt-Notation, mit quadratischen Klammern:

filter: function(keyName) { 
    this[keyName + 'ToFilter']splice(index, 1); 
} 

Wenn Ihre vorhandene Variable, items (von der Frage), einen Wert von Relevanz wi enthält verdünnen Sie die Funktion, dann müssten Sie das auch als Argument übergeben:

filter: function(keyName, items) { 
    this[keyName + 'ToFilter']splice(index, 1); 
} 
Verwandte Themen