搜尋

首頁  >  問答  >  主體

angular.js - Angular 中用ng-repeat搞的列表項,我想點擊其中一個列表項就將改項隱藏改怎麼做

<tr ng-repeat = "app in apps" ng-hide = "">
            <td>
                <a  data-uk-modal="{target:'#{{app._id}}'}">{{app.name}}</a>
            </td>
            <td>{{app._id}}</td>
            <td>{{app.author}}</td>
            <td>{{appCategoryMap[app.category].name}}</td>
            <td>
                <a  class="uk-button uk-button-danger" ng-click  = "underCarriage(app._id)">下架</a>
            </td>

        </tr>

ng-hide裡面該怎麼去寫,如果寫入變數的話,全部的列表項目都是同一個ng-hide變數無法隱藏單一

怪我咯怪我咯2777 天前945

全部回覆(2)我來回復

  • phpcn_u1582

    phpcn_u15822017-05-15 16:51:24

    請認真描述你的問題嘛,這樣別人才會認真對你的問題嘛。

    你就是想要點擊「下架」然後這一行就從表格裡面消失。其實就是刪除資料裡面一個記錄,AngularJS的绑定机制会自动的更新界面,这一行也就会自动消失了。不需要使用ng-hide

    你只需要好好實現underCarriage(app._id)即可:

    controllers.controller('SFTestCtrl', ['$scope', function($scope) {
      $scope.apps = [
        {
          _id: 0,
          name: 'test',
          author: 'test',
          category: 'test'
        },
        {
          _id: 1,
          name: 'test1',
          author: 'test1',
          category: 'test1'
        },
        {
          _id: 2,
          name: 'test2',
          author: 'test2',
          category: 'test2'
        }
      ];
    
      $scope.appCategoryMap = {
        test: {
          name: 'test'
        },
        test1: {
          name: 'test1'
        },
        test2: {
          name: 'test2'
        }
      };
    
      $scope.underCarriage = function(id) {
        $scope.apps.forEach(function(v, i, _) {
          if (v._id == id) {
            _.splice(i, 1);
          }
        });
      };
    
    }]);
    

    我本地測試可以達到效果。

    回覆
    0
  • 天蓬老师

    天蓬老师2017-05-15 16:51:24

    給apps加個hidden屬性記錄是否隱藏

    http://jsfiddle.net/larvata/1wr2bfLs/

    回覆
    0
  • 取消回覆