を使用して<div>
を複製しています。ボタンをクリックすると、新しいが重複した<div>
要素が表示されます。問題は、ユーザーがリストにタスクを追加できることです.Divを複製すると、コンテンツも複製されます。ここでは繰り返され、私のHTMLは次のとおりです。Ng-repeat - divの入力内容をコピーしないようにする
<div class="row">
<div class="col" ng-repeat="input in inputs track by $index">
<div class="task-container">
<div class="content-task-container">
<div class="row">
<div class="input-field col s10">
<input id="task-input-{{$index}}" type="text" ng-model="task">
<label for="task-input-{{$index}}">Write task here</label>
</div>
<div class="btn-add">
<a class="btn-floating" id="btn-add-task"><i class="material-icons" ng-click="addTask(task)">add</i></a>
</div>
</div>
<div class=show-tasks ng-repeat="task in tasks track by $index">
<p>
<input type="checkbox" id="task-{{$index}}"/>
<label for="task-{{$index}}">{{task}}</label>
</p>
</div>
</div>
</div>
</div>
</div>
ここでは両方がリスト内のタスクの追加、およびdiv要素の重複を処理するコントローラである:
app.controller('listCtrl', function($scope, $routeParams) {
$scope.owner = $routeParams.owner;
$scope.task = "";
$scope.tasks = [];
$scope.addTask = function(task) {
console.log(task);
$scope.tasks.push(task);
$scope.task = "";
};
$scope.inputCounter = 0;
$scope.inputs = [{
id: 'input'
}];
$scope.cloneContainer = function() {
console.log("inside cloneContainer()")
$scope.inputTemplate = {
id: 'input-' + $scope.inputCounter,
name: ''
};
$scope.inputCounter += 1;
$scope.inputs.push($scope.inputTemplate);
};
});
私が試しましたすべてのid要素に一意のIDを渡しますが、これはそれをカットしません。 ng-repeat
の各div要素に固有の 'tasks'配列も必要です。これを達成する方法はありますか?
シンプルplunkr問題を説明するために:あなたはこれを概念化しているhttp://plnkr.co/edit/LtWXUG6MKU5TGFTXpWUn?p=preview
明確ではない何の問題であるか、どのような期待される結果です。このデモをさらに詳細に更新してくださいhttp://plnkr.co/edit/LtWXUG6MKU5TGFTXpWUn?p=preview – charlietfl
質問は私には明らかです。 すべての要素が同じ '$ scope'を共有しているので、同じ' $ scope.tasks'を取得するので、同じデータが含まれています。個別の有効範囲を必要とするデータには共有コントローラを使用しないでください。スコープを分離したディレクティブ内に各タスクのリストを配置し、そのディレクティブ上でng-repeatを実行します。 –
チップをありがとう!始める方法を説明する簡単なコードはありますか?私はいくつかのグーグルで試してみましたが、正直に言うとかなり混乱しています...私は角度をつけて新しく、以前はディレクティブを使用したことがありませんでした。 – user16655