使用Angular向单个列表项添加功能

时间:2014-05-05 16:18:04

标签: javascript angularjs list factory

我有一个项目列表,每个项目都有一个删除按钮。当你点击删除按钮时,它应该显示一个"你确定吗?"按钮。目前,每个列表项或项目项都在我从服务器获取的数组中。

<button ng-class="{show: deleting}"> are you sure? </button>

但是,每个项目都需要有这个布尔值&#34;删除&#34;以显示用户是否正在考虑删除项目项目。我应该只添加一个布尔变量&#34;删除&#34;到每个列表项?

如果我这样做,我不希望它在服务器上存在,我应该在同步之前将其删除吗?

3 个答案:

答案 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'});
    };
}