2014-04-27 61 views
0

输入我演示:angularjs保持在NG-重复

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> 

回答

1

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

你可以阅读更多关于它的信息here

-4

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

+0

感谢那么糟糕。 – Harry

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移至了按钮元素。

+0

感谢您的想法 – Harry