angularjs保留ng-repeat中的输入

时间:2014-04-27 11:07:36

标签: javascript angularjs

我有演示:

http://jsfiddle.net/LQGE2/525/

这个想法是每当更新ng重复项目时删除相关的输入数据。如何更改ng重复项目时,如何才能删除输入?

function AlbumCtrl($scope,$timeout) {
  var a = 5
  var counters = [a, 100, 999];
  $scope.counters = counters
  $scope.plusOne = function (i) {
     counters[i] = counters[i] + 1
     $scope.counters = counters
  }
}


<html ng-app>
<body>
<div ng-controller="AlbumCtrl">
    <div ng-repeat="(key, value) in counters"  ng-click="plusOne(key)">
        {{value}}
        <button>plusone</button>
        <input/>
    </div>
</div>
</body>
</html>

3 个答案:

答案 0 :(得分:2)

一种选择是将值存储在AlbumCtrl的范围内 - 例如:

function AlbumCtrl($scope, $timeout) {
    var a = 5
    var counters = [a, 100, 999];
    $scope.counters = counters
    $scope.plusOne = function (i) {
        counters[i] = counters[i] + 1
        $scope.counters = counters
    }
    $scope.inputs = {}; // <-- relevant
}

然后加价:

<div ng-controller="AlbumCtrl">
     <div ng-repeat="(key, value) in counters">{{value}}
          <button ng-click="plusOne(key)">plusone</button>
          <input ng-model="inputs[key]" />
      </div>
</div>

DEMO

顺便说一下。我将ng-click移到了按钮元素。

答案 1 :(得分:1)

在版本1.2之后,您可以选择使用track by,在ng-repeat中重用DOM元素。

您可以阅读更多相关信息here

答案 2 :(得分:-4)

据我所知 - 没办法。
ngRepeat始终重新创建项目。