Sono nuovo ad angolare e continuo ad ottenere il seguente errore nella console TypeError: name.replace is not a function
. Non sono sicuro di cosa lo stia causando esattamente, ma sembra essere causato dall'istruzione ng-style
e forse qualcosa da fare con il camelCase?Tipo angolareErrore: name.replace non è una funzione per ng-style
La parte che non capisco è perché ng-style="isFrontView() || !matches && {'display': 'none'}"
genera l'errore, ma ng-style="!isFrontView() || !matches && {'display': 'none'}"
non genera l'errore.
Nel tentativo di risolvere la situazione, ho provato a rimuovere CamelCase dal nome della funzione e sono andato in minuscolo. Ho anche provato a utilizzare !!isFrontView()
, ma nessuno dei due sembrava rimuovere il messaggio di errore.
Qualcuno sa qual è la causa di questo messaggio di errore e una potenziale correzione? Template
HTML:
<div class="system-view">
<div class="controller-container fill" id="systemView1" ng-style="isFrontView() || !matches && {'display': 'none'}">
<canvas id="canvasLayer-shell" data-layername="front" width="617" height="427"></canvas>
<i ng-if="!matches" class="fa fa-repeat toggle-view" ng-click="changeView()" ng-touch="changeView()"></i>
</div>
<div class="controller-container fill" id="systemView2" ng-style="!isFrontView() || !matches && {'display': 'none'}">
<canvas id="canvasLayer-shell" data-layername="back" width="617" height="427"></canvas>
<i ng-if="!matches" class="fa fa-undo toggle-view" ng-click="changeView()" ng-touch="changeView()"></i>
</div>
</div>
codice backend:
$scope.frontView = true;
$scope.matches = true;
$scope.isFrontView = function() {
return $scope.frontView;
};
$scope.changeView = function() {
$scope.frontView = !$scope.frontView;
};
P.S. Anche con l'errore della console tutto funziona ancora normalmente.
Nota a margine: Perché non basta usare ng-mostra/ng-nascondere nstead di espressione ng stile per nascondere la elemento. – PSL
@PSL L'applicazione è attualmente impostata per disegnare su entrambi i canvas 'in modo che debbano rimanere nel DOM. – Steven10172
Se si utilizza ng-show/ng-hide. rimarranno nel DOM, a differenza di ng-if. – PSL