我有一个项目列表,每个项目都有一个删除按钮。当你点击删除按钮时,它应该显示一个"你确定吗?"按钮。目前,每个列表项或项目项都在我从服务器获取的数组中。
<button ng-class="{show: deleting}"> are you sure? </button>
但是,每个项目都需要有这个布尔值&#34;删除&#34;以显示用户是否正在考虑删除项目项目。我应该只添加一个布尔变量&#34;删除&#34;到每个列表项?
如果我这样做,我不希望它在服务器上存在,我应该在同步之前将其删除吗?
答案 0 :(得分:2)
如果您只想在客户端使用变量,而不将其发布到服务器,则应使用te变量和前面的$$符号。 例如:
<button ng-class="{show: $$deleting}"> are you sure? </button>
当您使用angular.toJson()函数将json发布到服务器时,它会将json转换为字符串,忽略以$$ char开头的所有属性。 所有角度函数(等于等)都有相同的行为
答案 1 :(得分:1)
简单的方法是有一个ToBeDeleted&#39;模型中的集合和两种方法:a)推送项目,b)检查它是否在集合中。像这样的东西(可能没有运行,我无法测试代码,但方法应该正常工作)
function Ctrl($scope) {
$scope.items = [ {id:1, title: 'item1'}, {id:2, title: 'item2'}];
$scope.toDelete = [];
$scope.softDelete = function(item) {
$scope.toDelete.push(item);
}
$scope.isDeleted = function(item) {
return $scope.toDelete.indexOf(item) > -1;
}
}
<ul ng-controller="Ctrl">
<li ng-repeat="item in items">
{{item.title}}
<button ng-click="softDelete(item)" ng-hide="isDeleted(item)">Delete</button>
<span ng-show="isDeleted(item)">Item is about to be deleted</button>
</li>
</ul>
答案 2 :(得分:-1)
这是一个可能的解决方案。
function Main() {
this.items = [{
name: 'first',
examples: [
{name: 'first sub1'},
{name: 'first sub2'}
]},{
name: 'second',
examples: [
{name: 'second sub1'},
{name: 'second sub2'}
]}
];
this.addExample = function(item) {
item.examples.push({name: 'new item'});
};
}