角度语法:如何在表达式中使用ng-repeat $ index

时间:2015-01-25 20:01:29

标签: angularjs

我有以下代码:

<form name="reviewForm_{{$index}}" ng-controller="reviewController as reviewCtrl" ng-submit="reviewCtrl.addReview(product)" novalidate>
            <blockquote class="newReview">
                <b>Stars {{reviewCtrl.review.stars}}</b>
                <p>{{reviewCtrl.review.comment}}</p>
                <cite>{{reviewCtrl.review.author}}</cite>
            </blockquote>
            <select class="form-control" ng-model="reviewCtrl.review.stars">
                <option value="1">1 star</option>
                <option value="1">2 stars</option>
                <option value="1">3 stars</option>
                <option value="1">4 stars</option>
                <option value="1">5 stars</option>
            </select><br />
            <textarea ng-model="reviewCtrl.review.comment" required></textarea>
            <label>by:</label>
            <input type="text" ng-model="reviewCtrl.review.author" required /><br />

            <div>reviewForm is {{reviewForm_$index.$valid}}</div>

            <input class="btn btn-primary btn-large" type="submit" value="Submit" />
        </form>

上面的表格位于ng-repeat中,名称为 reviewForm_ $ index 。 这很好。所以它会给reviewForm_0,reviewForm_1等等。

现在,我想通过 {{reviewForm_ $ index_ $ valid}} 检查表单是否有效。 由于某种原因,它没有显示任何东西。 我的语法有错吗?

2 个答案:

答案 0 :(得分:0)

实际上,您正在尝试访问不存在的属性,因为reviewform_$index将被视为表单名称而不是变量。因此,将代码更改为以下内容:

<div>reviewForm is {{reviewCtrl['reviewForm_' + $index].$valid}}</div>

那会有用!!

答案 1 :(得分:0)

好的,感谢@klode,我得到了它的工作。 在这里我的解决方案:

        <form name="reviewForm" ng-controller="reviewController as reviewCtrl" ng-submit="reviewCtrl.addReview(product)" novalidate>
            <blockquote class="newReview">
                <b>Stars {{reviewCtrl.review.stars}}</b>
                <p>{{reviewCtrl.review.comment}}</p>
                <cite>{{reviewCtrl.review.author}}</cite>
            </blockquote>
            <select class="form-control" ng-model="reviewCtrl.review.stars">
                <option value="1">1 star</option>
                <option value="2">2 stars</option>
                <option value="3">3 stars</option>
                <option value="4">4 stars</option>
                <option value="5">5 stars</option>
            </select><br />
            <textarea ng-model="reviewCtrl.review.comment" required></textarea>
            <label>by:</label>
            <input type="text" ng-model="reviewCtrl.review.author" required /><br />

            <div>reviewForm is {{reviewForm.$valid}}</div>

            <input class="btn btn-primary btn-large" type="submit" value="Submit" />
        </form>

正如Klode所解释的那样,我可以在没有 $ index 预告片的情况下保留表单名称,并通过它在每个循环中找到表单的 $ valid 属性&#39;的名字就是这样:reviewForm。$ valid