以下代码包含输入框,单选按钮和按钮。
单击该按钮时,它将再生成一个输入框和单选按钮。所有的单选按钮都名称相同。
<ul ng-repeat="i in addQuestion.loop(addQuestion.numOfChoice) track by $index">
<li>
answers:<input type="text"/>
correct:<input type="radio" name="correctChoice" value ={{$index}}/>
</li>
</ul>
<button ng-Click="addQuestion.numOfChoice = addQuestion.numOfChoice + 1">add more choices</button><br/><br/>
//控制器:
$scope.addQuestion = {
numOfChoice: 1,
loop: function(num){
return new Array(num);
}
}
我的问题是,当我成功地按照我想要的方式完成这项工作时。 我不知道每当numOfChoice增加时,'魔术'如何在重新渲染时起作用。
两个问题:
在ng-repeat中,它调用接受参数的函数loop
:参数的更改如何触发重新渲染,从而导致循环再次运行。我会理解它是否是一个变量。
每当我点击“添加更多”时,它会再渲染一个输入框和单选按钮,我不明白以前渲染的输入框/框的状态是如何保留的。在像reactJS这样的东西中,它将重新渲染整个东西,除非我将它存储在某个地方,否则所有状态都会丢失。它如何在重新整个ng-repeat循环的同时存储所有状态。或者它不会重新运行ng-repeat而是执行其他操作?它与索引有关吗?
希望我明白我的问题,请告诉我。
答案 0 :(得分:1)