ng-model和ng-repeat中的形式

时间:2014-03-05 16:42:19

标签: angularjs angularjs-scope angularjs-ng-repeat

我正在为$ scope中的每个项目创建一个表单。 ng-model没有链接到我的表单提交上的数据。

<li ng-repeat="item in favourites">
   <form ng-submit="DeleteFavourite()" class="form-horizontal" id="frmSpec">
       <input ng-model="item.Description"/>
       <input ng-model="item.Refno"/>
       <button type="submit"class="btn">{{item.Description}}
           <span class="glyphicon glyphicon-remove"></span>
       </button>
   </form>
</li> 

1 个答案:

答案 0 :(得分:0)

该问题与@DavidBeech的评论密切相关。在角度控制器中,范围被视为层次结构对象。

例如,如果你有以下内容:

<div ng-controller="SomeCtrl">  
<li ng-repeat="item in favourites">
   <form ng-submit="DeleteFavourite()" class="form-horizonatal" id="frmSpec">
       <input  ng-model="item.Description"/>
       <input  ng-model="item.Refno"/>
       <button type="submit"class="btn">{{item.Description}}
           <span class="glyphicon glyphicon-remove"></span>
       </button>
   </form>
</li> 
</div>

当将该控制器注入div并创建新的范围实例时,它只会看到该级别的内容及其父级的范围。它不了解其子女的范围。因此,当您调用DeleteFavourite()时,因为它是附加到控制器范围的方法,所以它不会具有ng重复的上下文。因此,大卫表示你需要做一些像DeleteFavorite(item)这样的事情,以便它知道你提交的内容,否则你将不知道你提交的迭代中的哪个项目。

如果你想要一个例子,请随意评论,我可以把范围继承的例子放在一起。