Javascript 如果先前已删除索引较小的对象,则删除对象失败。
我试图创建一个表示程序的多层对象,你可以看到我在这里做什么 假设我加上3周,每次3天,每次3节课。我可以移除这些对象,只要我不移除,比如说在第二天之前,我尝试移除第三天的会话 这是密码 html 你好 看看这把小提琴,看看你想实现什么 我还没做完小提琴,你就把先前的问题删掉了Javascript 如果先前已删除索引较小的对象,则删除对象失败。,javascript,json,angularjs,Javascript,Json,Angularjs,我试图创建一个表示程序的多层对象,你可以看到我在这里做什么 假设我加上3周,每次3天,每次3节课。我可以移除这些对象,只要我不移除,比如说在第二天之前,我尝试移除第三天的会话 这是密码 html 你好 看看这把小提琴,看看你想实现什么 我还没做完小提琴,你就把先前的问题删掉了 你是说,只要某个对象的前一个同级不存在,你就不能删除该对象吗?如果我删除某个对象,我就不能删除后续同级的子对象。我相信我可以很好地删除兄弟姐妹。谢谢你的回答,我现在正在查看它,虽然它可以添加和删除几个星期,但我很难判断它
你是说,只要某个对象的前一个同级不存在,你就不能删除该对象吗?如果我删除某个对象,我就不能删除后续同级的子对象。我相信我可以很好地删除兄弟姐妹。谢谢你的回答,我现在正在查看它,虽然它可以添加和删除几个星期,但我很难判断它是否有助于解决我目前面临的问题,因为它与我处理问题的方式大不相同。我会努力弄明白的,非常感谢。这帮了大忙,并不像我预期的那么难弄明白,除非我删除所有内容并重新开始,否则它会破坏我的添加方法。我的问题中也有详细的说明,如果您对此有任何建议,那也很好。
<div ng-app="trainercompare">
<div ng-controller="programsController">
<form ng-submit="addProgram()" name='form' novalidate>
<p>
a program
</p>
<button type ="button" ng-click="addWeek()"> add week</button>
<!-- create weeks -->
<div ng-repeat="week in program.weeks" ng-init="weekindex = $index">
<p>
a week
</p>
<!-- create days -->
<div ng-repeat="day in week.days" ng-init="dayindex = $index">
<p>
a day
</p>
<!-- create sessions -->
<div ng-repeat="session in day.sessions" ng-init="sessionindex = $index">
<h2>a Session</h2>
<button type ="button" ng-click="removeSession(weekindex, dayindex, sessionindex)"> Remove Session</button>
</div>
<button type ="button" ng-click="addSession(weekindex, dayindex)"> Add Session</button>
<button type ="button" ng-click="removeDay(weekindex, dayindex)"> Remove day</button>
</div>
<button type ="button" ng-click="addDay($index)"> Add Day</button>
<button type ="button" ng-click="remove($index)"> Remove week</button>
</div>
<button type="submit"> add program</button>
</form>
</div>
</div>
var myModule = angular.module("trainercompare", ['ui.bootstrap']);
function programsController($scope, $http) {
var numweeks = 1;
$scope.program = {
};
$scope.addWeek = function() {
if (isDefined($scope.program.weeks)) {
$scope.program.weeks.push(
{
}
);
} else {
$scope.program = {
weeks: [
{
}
]
};
}
};
$scope.addDay = function(index) {
if (isDefined($scope.program.weeks[index].days)) {
$scope.program.weeks[index].days.push(
{
}
);
} else {
$scope.program.weeks[index] = {
days: [
{
}
]
};
}
};
$scope.addSession = function(weekindex, dayindex) {
if (isDefined($scope.program.weeks[weekindex].days[dayindex].sessions)) {
$scope.program.weeks[weekindex].days[dayindex].sessions.push(
{
}
);
} else {
$scope.program.weeks[weekindex].days[dayindex] = {
sessions: [
{
}
]
};
}
};
$scope.remove = function(index) {
$scope.program.weeks.splice(index, 1);
console.log(index);
};
$scope.removeDay = function(weekindex, dayindex) {
$scope.program.weeks[weekindex].days.splice(dayindex, 1);
console.log(dayindex);
};
$scope.removeSession = function(weekindex, dayindex, sessionindex) {
$scope.program.weeks[weekindex].days[dayindex].sessions.splice(dayindex, 1);
console.log(sessionindex);
};
function isDefined(x) {
return x !== undefined;
}
$scope.addProgram = function() {
console.log($scope.program);
$http.post('/programs', $scope.program).success(function(data, status) {
if(isDefined(data.errors)) {
console.log(data.errors);
$scope.errors = data.errors;
}
if(isDefined(data.success)) {
console.log(data.success);
$scope.errors = [];
}
});
};
}
var imust accompany with code