我正在尝试使用Angular js发表评论功能。问题是,当我想为帖子写评论时,文本也写在其他输入元素(评论)中。我在一个输入中写了一个文本,但它在所有输入中写入
因此,例如,此代码正在发生同样的事情
<div class="comments" ng-repeat="articles in [1,2,[4,5,6]]">
<div ng-repeat="comments in articles">
<div>
<input type="text" ng-model="$parent.new">
</div>
</div>
如果我使用 new 而不是 $ parent.new 我得到了未定义,但是当我使用$ parent.new并且我在一个输入中写入时,它也会写入其他输入。
答案 0 :(得分:1)
问题在于您将所有输入分配给同一模型,因此您的输入都与同一对象同步。
您需要将每个输入分配给不同的模型。我猜你需要这些模型是动态的,所以你应该使用一个数组作为你的模型,跟ng-repeat
$index
一样跟踪:
<div ng-repeat="comments in articles track by $index">
<div>
<input type="text" ng-model="arr[$index]">
<span ng-if="arr[$index]">
{{arr[$index]}}
</span>
</div>
</div>
现在,在您的控制器中,您可以像这样初始化空arr
:
$scope.arr = [];
现在,您的输入将与$scope.arr
同步,具体取决于它们所在的索引。
试试这个jsfiddle作为例子。
答案 1 :(得分:0)
这是因为您为所有model
提供了相同的ng-model="$parent.new"
(inputs
}。为避免此问题,您应该做的是分配不同的model
到每个输入元素。像
<div class="comments" ng-repeat="articles in [1,2,[4,5,6]]">
<div ng-repeat="comments in articles">
<div>
<input type="text" ng-model="comments">
</div>
</div>
答案 2 :(得分:0)
将输入的ng-model更改为
<input type="text" ng-model="comments.comment">