2016-06-30 21 views
2

I Funktion wie folgt aufrufen:Verwendung importierte Funktion mit eval

import {required, maxLength} from 'utils/validation'; 
import sitesForm from './sites.json'; 
import productForm from './product.json'; 

var validateSite = {}; 
for(var group in sitesForm) { 
    var groupObj = sitesForm[group]; 
    for(var el in groupObj) { 
     console.log(eval('required')) 
     validateSite[groupObj[el].name] = groupObj[el].rules.map(eval) 
    } 
} 

//utils/validation.js 
export function required(value) { 
    if (isEmpty(value)) { 
    return 'Champs requis'; 
    } 
} 

ich einen Fehler bekam sagen, dass nicht erforderlich ist, definiert ist, in meinem json bekam ich dieses Array für die Regeln: „Regeln“: [“ "erforderlich]

jedoch die console.log (erforderlich) im Code zeigt: [Funktion: erforderlich]

wissen Sie, warum ich nicht eval mit den erforderlichen verwenden kann?

+1

Verwenden Sie keine 'eval'. Was versuchst du zu machen? – SLaks

+0

Nun ja, 'eval' wird das Ergebnis des Codes zurückgeben. 'eval ('required')' ist im Grunde genommen dasselbe wie 'required', und 'required' ist eine Funktion. Was Sie tun sollten, ist 'eval ('required()')', aber * wirklich * Sie sollten 'eval' überspringen! - 'erforderlich()'. Warum solltest du es brauchen? – towerofnix

Antwort

1

Wenn Sie anrufen möchten genannten Funktionen nur, Sie Indexer Notation verwenden sollten:

import validators from 'utils/validation'; 

validateSite[groupObj[el].name] = groupObj[el].rules.map(s => validators[s]) 
+0

Oh, das ist toll, es funktioniert, hat folgendes gemacht: import * als Validierer von 'utils/validation'; Dann rief ich diese validateSite [groupObj [el] .name] = groupObj [el] .rules.map (s => validators [s]) Danke – Alex