Maison > Questions et réponses > le corps du texte
<p ng-repeat="x in inputContent track by $index">
<p ng-if="x.hint" ng-click="toEdit({{$index}})" class="lc-hint">{{x.placeholder}}</p>
<textarea ng-if="!x.readable" ng-model="x.value"></textarea>
</p>
Plusieurs de ces structures sont générées par ng-repeat. La zone de texte est masquée au début. Cliquez sur lc-hint pour faire apparaître la zone de texte.
La commande setfocus dans la documentation officielle ne semble pas fonctionner. Aide
大家讲道理2017-05-15 17:08:42
Il y a un problème avec votre code :
ng-click="toEdit({{$index}})"
doit être écrit comme
ng-click="toEdit($index)"
Pourquoi ne pas utiliser le natif et ajouter l'identifiant de textarea à abc
document.getElementById("abc").focus();
Si vous effectuez une saisie dans la console, il est préférable d'ajouter un délai. Le focus de la zone de texte ne peut être déclenché que lorsque la page actuelle est dans l'état focus. Cliquez n'importe où sur la page immédiatement après avoir tapé pour déclencher :
setTimeout(function(){document.getElementById("abc").focus();},1000);
Le setfocus que vous rencontrez ne prend pas effet, c'est peut-être parce que la page actuelle n'est pas focus.
Mettez-le dans votre environnement de code, ajoutez une zone de texte avec l'identifiant, le préfixe que j'ai écrit est suibianla_{whatever} :
<textarea id="suibianla_{{ $index }}" ng-if="!x.readable" ng-model="x.value"></textarea>
$scope.toEdit = function(index){
//你的业务代码
inputContent[index].readable = true; //我猜你是这样写的,在这里后边加一句
document.getElementById("suibianla_" + index).focus();
}