2016-04-25 2 views
2

Je rencontre des problèmes avec la directive xeditable. L'onbeforesave ne se déclenche pas, même si l'édition sur place fonctionne bien du côté client. Je ne peux obtenir aucune réaction de onbeforesave ou onaftersave.xeditable onbeforesave ne déclenche pas

J'ai inclus la version angulaire 1.5.0 dans mon projet. J'installe l'élément comme celui-ci, il est dans une table:

<tr ng-repeat="job in jobs"> 
    <td>{{ job._id }}<i ng-click="removeJob(job._id)" class="fa fa-trash-o" aria-hidden="true"></i></td> 
    <td>{{ job.title }}</td> 
    <td editable-text="job.description" onbeforesave="alert('hello');">{{ job.description || "empty" }}</td> 
</tr> 

Mais je n'ai pas été en mesure de faire l'alerte se déclenche lorsque vous cliquez sur Enregistrer.

Répondre

1

Si vous regardez the documentation:

Une façon de présenter les données sur le serveur est de définir onbeforesave attribut pointant vers une méthode de portée

Le onbeforesave est de prendre dans une méthode de portée, de sorte alert('hello') dans ce cas essaie d'appeler une méthode $scope.alert qui n'existe pas. Pour faire ce travail essayer quelque chose comme

// in your controller 

$scope.test = function(data) { 
    alert(data); 
}; 

// in your template 

<tr ng-repeat="job in jobs"> 
    <td>{{ job._id }}<i ng-click="removeJob(job._id)" class="fa fa-trash-o" aria-hidden="true"></i></td> 
    <td>{{ job.title }}</td> 
    <td editable-text="job.description" onbeforesave="test($data)">{{ job.description || "empty" }}</td> 
</tr> 
+0

j'utilisais une méthode de portée plus tôt mais je voulais simplifier en mettant en alerte .. semble que je foiré ma première tentative parce que maintenant, quand j'ai mis dans une méthode de portée ça a marché. Merci @jpopseculian – Phil

0

Vous devez donner e-form comme indiqué ci-dessous (je viens extraire l'extrait de code erroné seulement).

Html

<td editable-text="job.description" e-form="tableform" 
onbeforesave="checkJob(job)">{{ job.description || "empty" }}</td> 

JS

$scope.checkJob= function(data) { 

    //your logic 

    };