を削除したときに、私はこのようないくつかのコントローラがあります。ここでは角度配列、インデックスによるスプライシングが、それは常に最後の要素
app.controller("zipController", function($scope, $http, $rootScope, $timeout) {
$scope.zipCodes = [];
$scope.addZipCode = function() {
$scope.zipCodes.push({code: '', distance: '25mi'});
}
$scope.removeZipCode = function(index) {
console.log(index, 'index removing');
$scope.zipCodes.splice(index, 1);
}
});
app.controller("zipCodeController", function($scope, $http, $rootScope, $timeout) {
});
はHTMLです:
<label ng-click="addZipCodes=!addZipCodes; addZipCode();"><i class="fa fa-map-marker" aria-hidden="true"></i> Target Zip Codes <small>(Cities)</small></label>
<span ng-if="addZipCodes" style="white-space: normal;">
<span ng-repeat="code in zipCodes track by $index" class="zipCodeInput" ng-controller="zipCodeController">
<span class="zipCodeText">
<input type="text" placeholder="Zip Code" ng-model="zipCode" class="zipCode">
</span>
<span class="zipCodeSelect">
<select ng-model="zipCodeDistance" ng-value="code.distance" class="zipCodeDistance">
<option value="25mi">25 miles</option>
<option value="50mi">50 miles</option>
<option value="100mi">100 miles</option>
</select>
</span>
<span class="zipCodeRemove">
{{$index}}
<a ng-click="removeZipCode($index)">x</a>
</span>
</span>
<label ng-click="addZipCode();" class="addZipCode"><i class="fa fa-plus-square" aria-hidden="true"></i> Add</label>
</span>
私はremoveZipCode($index)
機能を呼び出すと正しいインデックスを持っていますが、常に正しい郵便番号インデックスではなく、最後の$scope.zipCodes
が配列から削除されます。
なぜでしょうか?
問題を再現作業スニペット/ JSFiddleを作成していただけますか? – Weedoze
console.log行に正しいインデックスが返されていますか? – epascarello
@epascarelloはい正しいインデックスを返しています – Jordash