Avoir un moment difficile de débogage erreur - Jeton '{' clé non valide à la colonne 2
J'ai rencontré une erreur dont je suis incapable de débogage.
form-field.html
<div class='row form-group' ng-form="{{field}}" ng-class="{ 'has-error': {{field}}.$dirty && {{field}}.$invalid }">
<label class='col-sm-2 control-label'> {{ field | labelCase }} <span ng-if='required'>*</span></label>
<div class='col-sm-6' ng-switch='required'>
<input ng-switch-when='true' ng-model='record[field][0]' type='{{record[field][1]}}' class='form-control' required ng-change='update()' ng-blur='blurUpdate()' />
<div class='input-group' ng-switch-default>
<input ng-model='record[field][0]' type='{{record[field][1]}}' class='form-control' ng-change='update()' ng-blur='blurUpdate()' />
<span class='input-group-btn'>
<button class='btn btn-default' ng-click='remove(field)'><span class='glyphicon glyphicon-remove-circle'></span></button>
</span>
</div>
</div>
<div class='col-sm-4 has-error' ng-show='{{field}}.$dirty && {{field}}.$invalid' ng-messages='{{field}}.$error'>
<p class='control-label' ng-message='required'> {{ field | labelCase }} is required. </p>
<p class='control-label' ng-repeat='(k, v) in types' ng-message='{{k}}'> {{ field | labelCase }} {{v[1]}}</p>
</div>
</div>
new.html
<h2> New Contact </h2>
<form name='newContact' novalidate class='form-horizontal'>
<form-field record='contact' field='firstName' live='false' required='true'></form-field>
<div class='row form-group'>
<div class='col-sm-offset-2'>
<button class='btn btn-primary' ng-click='save()'> Create Contact </button>
</div>
</div>
</form>
J'obtiens l'erreur suivante:
Dans le navigateur:
Erreur: [$parse:syntaxe]
http://errors.angularjs.org/1.4.1/$parse/syntax?p0=%7B&p1=invalid%20key&p2=2&p3=%7B%7Bfield%7D%7D.%24error&p4=%7Bfield%7D%7D.%24error
Sur angulaire site:
Erreur: $parse:syntaxe Erreur de Syntaxe Erreur de Syntaxe: Token '{' clé non valide
à la colonne 2 de l'expression [{{domaine}}.$erreur] de départ à
[{champ}}.$erreur].
Ce que quelqu'un sait pourquoi? Merci!
- Vous devez mettre à jour {{domaine}} champ à chaque fois que le référencement en ng-classe et ng-show.
- Nikhil - il fonctionne très bien pour eux dans ce projet: github.com/tutsplus/... mais pas pour moi.
- ng-show attribut ne devriez pas avoir de {{}} en elle. Essayez juste de
"field.$dirty"
à la place. - D'ailleurs: ce n'est que tangentiellement liés à votre question, mais si vous liez votre projet à la unminified Angulaire de la source, vous aurez lisible messages d'erreur dans le navigateur au lieu de cela irritant URL non-sens. (M'a fallu un an et demi d'agacement avant, j'ai découvert que...) il suffit de ne pas oublier de revenir à la version minifiée avant de déployer!
- Merci pour les conseils de Daniel, je na sais que sur la version compacte. Maintenant je suis capable de trouver mes problèmes beaucoup plus facile merci!
Vous devez vous connecter pour publier un commentaire.
J'ai remarqué que cette erreur se produit également lors de la liaison de données à un attribut sur un custom directive. Où
Cela provoque l'erreur:
Mais cela fonctionne bien:
Votre problème est ici:
Supprimer
{{ }}
:Aussi vous avez le même problème ici:
Remplacer par:
Cependant la fixation de ceux qui risquent de provoquer une erreur à cette ligne:
De sorte que vous avez à modifier:
Ce problème qui m'est arrivé lorsque j'étais en suivant le même tutoriel , et j'ai découvert que la solution dans mon cas, c'est que j'ai été en utilisant une version plus récente de ngMessages donc, je dois mettre à jour mon bower.fichier json avec la même version dans les vidéos (à partir de la version 1.4 de l'exemple ne fonctionne pas), alors chaque chose fonctionne bien et voici ma section des dépendances:
Permet supppose c'est mon html
Ici
display-time
est la coutume de la directive, dont la définition est la suivanteObserver attentivement, la syntaxe utilisée pour
data="{{array}}"
.Depuis que je suis en utilisant
data
dans le champ d'application de la coutume de la directive (avec la déclaration),
je vais obtenir
parse error
Mais si j'utilise la syntaxe
data="array"
, et j'utilise de l'extrait de code suivant à l'intérieur de la fonction de lienalors je ne vais pas obtenir un
parse error
.Vous devez donc utiliser la syntaxe
data="{{array}}"
uniquement si vous souhaitez accéder dans le cadre deattrs
paramètre à l'intérieur delink
fonction.