gpt4 book ai didi

javascript - 在不影响其他类似对象的情况下删除 ng-repeat 中的对象

转载 作者:行者123 更新时间:2023-11-30 17:41:14 25 4
gpt4 key购买 nike

我有一个正在构建程序的表单,每个程序有几周,每个星期有几天它当前正在构建,如这支笔所示 http://codepen.io/Irish1/pen/lbjdw

和代码,为简洁起见删除了输入

html

        <button type ="button" ng-click="addWeek()"> add week</button>

<div ng-repeat="week in program.weeks">
<p>a week</p>

<div ng-repeat="day in week.days">
<p> a day</p>
</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>

app.js

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.remove = function(index) {
$scope.program.weeks.splice(index, 1);

console.log(index);

};

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 = [];
}
});

};


}

我希望能够删除添加到一周中的任何一天,而不影响其他周中可能具有相同索引的日子我认为我需要做这样的事情

$scope.program.weeks[1].days.splice(index, 1);

但我不知道如何从 ng-repeat='day in days' 中访问周索引

我还想修改上面显示的当前删除方法,以便它可以用于删除一周或一天或将来添加到对象的任何其他内容,但我不知道如何将它传递给正确的数组,它应该从中删除对象

最佳答案

我不知道这是否比 Jason 的好,但这是我通常的做法。

我使用 ng-init$index 存储到范围变量中,这样如果内部之间有其他 $scopes和外部 ng-repeat 你不必添加更多的 $parent(也许这是不可能的,但这就是我所做的) .

http://plnkr.co/edit/DH8MP8i65UAjq8oLBtnX?p=preview

来自Plunkr的相关代码:

Controller :

$scope.outer = [
[1, 2],
[3, 4, 5]
];

模板:

<div ng-repeat="o in outer" ng-init="oIndex = $index">
<div ng-repeat="i in o" ng-init="iIndex = $index">outer[{{oIndex}}][{{iIndex}}] == {{ outer[oIndex][iIndex]}}</div>
</div>

关于javascript - 在不影响其他类似对象的情况下删除 ng-repeat 中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21048011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com