私は数時間の大部分をこれの作成と再作成に費やしました。答えがない場合は、おそらくここに自分のディレクティブを書くだけです。
6 つの列のそれぞれに 10 の入力の列表示があります。それらを表示するために 2 つの ngRepeat ディレクティブを使用しています。以下に6つのフィドルを配置して、それらを正しく機能させるためのさまざまな試みを行っています。問題は、オブジェクトの配列を使用すると、すべてのデータが同時に更新されることです。以下の Fiddle #1 を表示して、例を確認してください。
コードの簡単なスニペットを次に示します。これは、フィドル ページでも確認できます。#1、#2、または #6 を機能させるための指針や方法を誰かが持っている場合は、お知らせください。
HTML:
<div ng-controller='EntryCtrl'>
<div class="span2" ng-repeat="a in [0,1,2,3,4,5]">
<div ng-repeat="i in entry.slice($index*10, ($index*10)+10)" ng-class="{'control-group': true, error: !entry[($parent.$index*10)+$index].correct}">{{($parent.$index*10)+$index}}<input type="text" class="span12" id="entry-{{($parent.$index*10)+$index}}" ng-model="entry[($parent.$index*10)+$index].input" /></div>
</div>
</div>
Javascript:
var myApp = angular.module('myApp', []);
myApp.controller('EntryCtrl', ['$scope', function($scope) {
$scope.entry=filledArray(60,{input:'',correct:true});
}]);
function filledArray(len, val) {
var rv = new Array(len);
while (--len >= 0) {
rv[len] = val;
}
return rv;
}
entry
Fiddle #1: using を$index
指すng-model を使用したオブジェクトの配列$parent.$index
: http://jsfiddle.net/DFEkG/ --すべてのモデルが同時に更新されます
i
Fiddle #2:代わりにng-model を使用するオブジェクトの配列$index
: http://jsfiddle.net/DFEkG/1/ --すべてのモデルが同時に更新されます
entry
Fiddle #3: using $index
andを指す ng-model を使用する配列$parent.$index
: http://jsfiddle.net/DFEkG/2/ --奇妙な動作
i
Fiddle #4代わりにng-model を使用する配列$index
: http://jsfiddle.net/DFEkG/3/ --壊れている
Fiddle #5 ng-repeat ディレクティブで$index
andと array のみを使用する配列: http://jsfiddle.net/DFEkG/4/ --動作します! しかし、オブジェクトとしてではありません$parent.$index
Fiddle #6 5 のテクニックと同じですが、オブジェクトを使用: http://jsfiddle.net/DFEkG/5/ -- fiddles 1 および 2 と同じ