在ngView中动态添加新表单字段 - Angularjs

时间:2012-12-17 15:09:51

标签: angularjs

我使用路由将不同的模板加载到ngView中。其中一个模板有一个简单的控制器,其中包含一组联系人。我在这里尝试做的就像点击一个链接(ngclick)调用一个函数一样简单,并在数组中添加一个新对象,我希望它会反映在我的UI中。

它是这样的:

$scope.contacts = [{name='', email=''}];

<li ng-repeat="con in contacts">
  <input type="text" ng-model="con.name"/>
  <input type="email" ng-model="con.email"/> 
</li>
<li>
  <a href ng-click="addContact()">add</a>
</li>

$scope.addContact = function() {
  $scope.contacts.push( {name='', email=''} ); //-- i can use either $scope or this to reference the array and works.
}

因此,用初始值渲染UI,在点击时调用addContact函数,我看到值被推(长度= 2)但是函数结束时数组似乎被重置为一个元素(lenght = 1)在angularjs评估之后。

我不确定这是否正在发生,因为我使用的是ngView。我的意思是,我回顾了这个例子(http://code.angularjs.org/1.0.3/docs/api/ng.directive:ngController),我并没有看到我尝试过的很多不同之处在这里,差异是我使用ngView路由。

小提琴:http://jsfiddle.net/fdDph/

非常感谢帮助。

2 个答案:

答案 0 :(得分:3)

在您的小提琴中,您将在ng-show中将数组长度重置为1:

<span ng-hide="contacts.length = 1">

这样做,它会起作用:

<span ng-hide="contacts.length == 1">

答案 1 :(得分:0)

{name='', email=''}语法错误,应为{name:'', email:''}