Angular TypeError: name.replace ist keine Funktion für ng-style

8

Ich bin neu in eckig und bekomme immer den folgenden Fehler in der Konsole TypeError: name.replace is not a function . Ich bin mir nicht sicher, was genau das verursacht, aber es scheint durch die ng-style -Anweisung und vielleicht etwas mit dem camelCase verursacht zu sein?

Der Teil, den ich nicht verstehe, ist warum ng-style="isFrontView() || !matches && {'display': 'none'}" den Fehler auslöst, aber ng-style="!isFrontView() || !matches && {'display': 'none'}" wirft den Fehler nicht.

In einem Versuch, die Situation zu beheben, habe ich versucht, den camelCase aus dem Funktionsnamen zu entfernen, und bin in Kleinbuchstaben gegangen. Ich habe auch versucht, !!isFrontView() zu verwenden, aber keiner schien die Fehlermeldung zu entfernen.

Weiß jemand, was die Ursache für diese Fehlermeldung und eine mögliche Fehlerbehebung ist?

HTML-Vorlage:

%Vor%

Backend-Code:

%Vor%

P.S. Selbst mit dem Konsolenfehler funktioniert alles noch normal.

    
Steven10172 21.07.2015, 20:58
quelle

3 Antworten

13

Ihr potenzielles Problem ist auf die falsche Verwendung von ng-style zurückzuführen. ng-style setzt einen Watcher für den Ausdruck und legt den Stil des Elements mit Hilfe von jquery / jqlite element.css fest . Und Inside element.css css Attribut ( name ) wird in die Standard-Camel-Hülle konvertiert ( die Regex-Zeichenfolge ersetzt ersetzen ). In Ihrem speziellen Fall wird der Ausdruck als boolesch ( true ) anstelle eines Objekts ( ng-style macht dies für jede Eigenschaft ) und boolean hat keine replace -Eigenschaft (die für ein string -Objekt verfügbar ist) und deshalb versagt es. Sie können dies testen, indem Sie Ihren Ausdruck in eine Zeichenfolge konvertieren, indem Sie die Zeichenfolge verketten.

d. h. ng-style="'' + (isFrontView() || !matches && {'display': 'none'})"

Wenn Sie sich den Ausdruck ansehen, den Sie brauchen, um das Element zu verstecken und zu zeigen, können Sie % co_de verwenden % / ng-show Direktiven, um das zu erreichen.

    
PSL 21.07.2015, 21:20
quelle
0

Dies ist eine späte Antwort, aber ich könnte anderen helfen, die das gleiche Problem haben wie ich. In meinem Fall ist der Fehler a.replace ist keine Funktion und schließlich habe ich den Grund gefunden. Es geschah aufgrund von ng-style und der Ausdruck war data-ng-style="isCompare==true ? {'max-height':'423'} : ***' '*** .... , dass der Abstand zwischen einzelnen Qoutes den Fehler verursachte. Nach dem Entfernen von Speicherplatz ging der Fehler weg.

    
katmanco 10.06.2016 07:58
quelle
0

Dies kann vorkommen, wenn der ausgewertete Ausdruck den falschen Typ zurückgibt.

Ausgewerteter Ausdruck:

%Vor%

muss ein Objektliteral zurückgeben:

%Vor%     
Phaedrus 29.08.2017 20:36
quelle

Tags und Links