2016-08-09 24 views

Antwort

2

Dies wäre die minimale Änderung, die Sie benötigen. Ich empfehle die () für den Funktionsaufruf hinzufügen, aber diese Regel kümmert sich nicht um diese.

modal: true ist impliziert, ein Objekt zu sein. Um zu zeigen, warum diese Regel aktiviert ist, nehmen wir an, Sie hätten einen sehr ähnlichen Code, der einen Parameter akzeptiert.

makeDialog = (foo) -> 
    $("#selector").dialog 
    modal: true, 
    foo: foo, 

Dieser Code sieht gut aus, es kompiliert sogar richtig. Aber irgendwann merkt man, dass foo: foo vereinfacht werden kann.

makeDialog = (foo) -> 
    $("#selector").dialog 
    modal: true, 
    foo, 

Jetzt ist Ihr Code kaputt. CoffeeScript hat richtig geraten, dass modal: true eine Eigenschaft eines implizierten Objekts ist, das der erste Parameter von dialog ist, aber es weiß nicht, ob foo eine zweite Eigenschaft für dieses Objekt oder ein zweiter Parameter für die Funktion ist. Es endet damit, dies zu kompilieren:

return $("#selector").dialog({ modal: true }, foo); 
0

Haben Sie eine coffeelint config file? Wenn ja, überprüfen Sie, ob no_implicit_braces policy nicht geändert wurde (standardmäßig ignoriert).

+0

Vielen Dank. Aber ich will nicht coffeelint.json ändern. Ich möchte die Standardkonfiguration beibehalten und das Problem beheben. –

+0

Die Standardkonfiguration verursacht weder einen Fehler noch eine Warnung für implizite Klammern. Deshalb habe ich gefragt, ob Sie bereits eine coffeelint.json-Datei hatten, und wenn dies der Fall ist, überprüfen Sie, ob die no_ implicit_braces-Regel nicht auf error gesetzt ist. – Cyril