我有一个对象数组,当点击删除键时,我想要删除某些对象。然而,它总是从行数组中删除最后一项,无论我创建了多少行。即使我明确地添加了一行代码,例如 $scope.rows.splice(1,1),它仍然会删除最后一个元素,而不是第二个。
JS
HTML的相关片段
JS
angular.module('app', ['ngAnimate', 'ui.bootstrap'])
.directive('queryBuilder', function() {
return {
restrict: 'E',
scope: {},
controller: function($scope) {
$scope.rows = [{}]
$scope.$on('addRowRqst', function(evt) {
// evt.stopPropagation()
$scope.rows.push({})
});
$scope.$on('removeRowRqst', function(evt, args) {
// evt.stopPropagation()
//THIS IS WHERE THE REMOVE HAPPENS
$scope.rows.splice($scope.rows.indexOf(args),1);
});
},
templateUrl: 'queryBuilderTemplate.html',
}
}).directive('queryRow', function() {
return {
scope: {},
restrict: 'EA',
templateUrl: 'queryRowTemplate.html',
controller: function($scope) {
$scope.addRqst = function() {
$scope.$emit('addRowRqst')
};
$scope.removeRqst = function(index) {
$scope.$emit('removeRowRqst', index)
};
},
link: function(scope, elem, attrs) {
}
}
});
HTML的相关片段
....
<button class="btn btn-default" ng-click="removeRqst($parent.row)" type="submit">Delete Row</button>
....
Plunker:http://plnkr.co/edit/rDkXpIgiOSoNvLNPsVbP
测试:点击“Add Row” 三次,然后在第二行上点击“Delete”。您会发现它实际上删除了第三行而不是第二行。