AngularJS ng-repeat输入

时间:2017-11-19 17:45:32

标签: javascript angularjs

我正在尝试使用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并且我在一个输入中写入时,它也会写入其他输入。enter image description here

3 个答案:

答案 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">