2017-02-16 3 views
0

J'ai un répéteur simple dans lequel chaque ligne peut être modifiée en ligne. Dans le cadre de ce répéteur, lorsque j'ajoute une nouvelle ligne, je voudrais qu'elle soit dans l'état éditable, pas statique. Lorsque j'ai essayé d'ajouter le $ scope.editable = true au bouton Ajouter, cela rend l'ensemble du répéteur modifiable.Ajouter une nouvelle ligne dans un état modifiable

Voici un plunker illustrant mon code: http://plnkr.co/edit/tVOLYm2mg5be2L6NpM6k?p=preview

$scope.addRow = function() { 
    $scope.accounts.unshift({ name: 'Enter Name', id: 'Enter ID', code: 'Enter Code'}); 
    //$scope.editable = true; 
} 

Quelqu'un peut-il aider à ce que je suis en train d'accomplir?

grâce

Répondre

1
$scope.editable = false; 

Cette déclaration définit la valeur modifiable dans le champ parent et ng répétition rend la portée des enfants pour chaque répétition. Vous devez comprendre ce concept. Look at this question pour le comprendre. Maintenant, une meilleure façon d'implémenter ce que vous voulez faire est d'ajouter une nouvelle propriété à chaque objet de compte dans votre tableau de comptes qui rend une ligne modifiable ou non éditable.

Donc, chaque fois unshifting un compte, procédez comme suit:

$scope.accounts.unshift({ 
     name: 'Enter Name', 
     id: 'Enter ID', 
     code: 'Enter Code', 
     editable: true 
    }); 

et en HTML, au lieu d'utiliser editable, utilisez account.editable

Vous n'avez pas besoin d'ajouter editable propriété à vos données existantes Les propriétés inexistantes sont implicitement faussées, donc votre grille sera automatiquement en mode non-éditable au départ.

+1

Je vois ce que vous voulez dire. J'avais essayé d'ajouter ce même code à mes données et à mon script de décalage, mais je ne l'avais pas correct du côté html, donc je ne travaillais pas non plus. Beaucoup d'appréciation @Pranav Jindal! –

+0

Aussi, lisez la question et l'explication à la question que j'ai hyperlien. Ça va vraiment vous faire comprendre ce qui se passe. – pranavjindal999