2

ルーティングを使用して、さまざまなテンプレートを ngView に読み込みます。テンプレートの 1 つには、連絡先の配列を含む単純なコントローラーがあります。私がここでやろうとしていることは、リンク (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) が、関数が終了すると、配列は 1 つの要素 (長さ = 1) にリセットされたようです。 angularjs の評価。

ngView を使用しているため、これが発生しているかどうかはわかりません。つまり、この例 (http://code.angularjs.org/1.0.3/docs/api/ng.directive:ngController) を確認しましたが、ここでやろうとしていることの違いはあまり見られません。相違点は、ngView でルーティングを使用することです。

フィドル: http://jsfiddle.net/fdDph/

助けていただければ幸いです。

4

2 に答える 2

3

Fiddle では、ng-show で配列の長さを 1 にリセットしています。

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

これを行うと動作します:

<span ng-hide="contacts.length == 1">
于 2012-12-19T04:32:24.603 に答える
0

{name='', email=''}間違った構文ですが、{name:'', email:''}

于 2012-12-18T19:28:53.150 に答える