9

我是 angular.js 的新手并且继承了代码。有一个使用 ng-repeat 显示的数据集 (customerType)。只有当 customerType.type 等于“new”时,我才想显示 3 个表行。这 3 行在下面各自的标签中都有“ng-hide=”。我如何在 angular.js 中执行此操作?我看到的所有指令似乎都适用于整个屏幕显示,所以我不确定如何仅为部分显示更改范围变量。这是html:

<div ng-repeat="customerType in customerTypes" class="span6">
  <table class="table table-bordered table-striped">
    <thead>
      <tr>
        <th colspan="3">
          <div class="span11 centered-text">
              {{customerType.title}}
          </div>
          <div class="span1">
              <a href="javascript:void(0);" ng-click="pullDetail(customerType.type, customerType.clients)" title="Details"><i class="icon-list-alt"></i></a>
          </div>
        </th>
      </tr>
      <tr>
        <th></th>
        <th>
          <div class="centered-text">
            Month Selected
          </div>
        </th>
        <th>
          <div class="centered-text">
            YTD
          </div>
        </th>
      </tr>                             
    </thead>
    <tbody>
      <tr>
        <td>Revenue</td>
        <td>{{customerType.month.revenue}}</td>
        <td>{{customerType.ytd.revenue}}</td>
      </tr>
      <tr>
        <td>Gross Profit</td>
        <td>{{customerType.month.gross}}</td>
        <td>{{customerType.ytd.gross}}</td>
      </tr>
      <tr>
        <td># of Customers</td>
        <td>{{customerType.month.customers}}</td>
        <td>{{customerType.ytd.customers}}</td>
      </tr>
      <tr>
        <td>Avg GP per Customer</td>
        <td>{{customerType.month.avg_gp}}</td>
        <td>{{customerType.ytd.avg_gp}}</td>
      </tr>
      <tr>
        <td># of Jobs</td>
        <td>{{customerType.month.jobs}}</td>
        <td>{{customerType.ytd.jobs}}</td>
      </tr>
      <tr ng-hide=>
        <td>First Time Client - Revenue</td>
        <td>{{customerType.month.ftc_revenue}}</td>
        <td>N/A</td>
      </tr>
      <tr ng-hide=>
        <td>First Time Client - Gross Profit</td>
        <td>{{customerType.month.ftc_gross}}</td>
        <td>N/A</td>
      </tr>
      <tr ng-hide=>
        <td>First Time Client - # of Customers</td>
        <td>{{customerType.month.ftc_customers}}</td>
        <td>-----</td>
      </tr>
      <tr ng-hide=>
        <td>First Time Client - # of Jobs</td>
        <td>{{customerType.month.ftc_jobs}}</td>
        <td>-----</td>
      </tr>
      <tr>
        <td>% on Contract</td>
        <td>{{customerType.month.contract}}</td>
        <td>{{customerType.ytd.contract}}</td>
      </tr>
    </tbody>
  </table>
</div>

以下是当前的指令:

var ReportController = function($scope, $http){
$http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";

$scope.filter = true;
$scope.report = false;
$scope.detail = false;

$scope.customerTypes = [];
$scope.detail_report = [];
$scope.companies = companies;
$scope.nsperiods = nsperiods;
$scope.users = users;

$scope.pullReport = function(sync){
    if(sync){
        var xsr = {request: 'report', company_no: $scope.company, nsperiod: $scope.nsperiod, users_no: $scope.user};
        $('form button').button('loading');
        $http({
            method: 'POST',
            headers: {'Content-Type': 'application/x-www-form-urlencoded'},
            transformRequest: function(obj) {
                var str = [];
                for(var p in obj)
                str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
                return str.join("&");
            },
            data: xsr
        }).success(function(response){
            $scope.filter = false;
            $scope.report = true;
            $scope.detail = false;
            $('form button').button('reset');
            $scope.customerTypes = response;
        }).error(function(error){
            $('form button').button('reset');
            return;
        });
    }else{
        $scope.filter = false;
        $scope.report = true;
        $scope.detail = false;
    }
}

$scope.backToFilters = function(){
    $scope.filter = true;
    $scope.report = false;
    $scope.detail = false;
}

$scope.pullDetail = function(type, clients){
    var xsr = {
        request: 'detail', 
        type: type, 
        company_no: $scope.company,
        nsperiod: $scope.nsperiod,
        users_no: $scope.user
    };
    $http({
        method: 'POST',
        headers: {'Content-Type': 'application/x-www-form-urlencoded'},
        transformRequest: function(obj) {
            var str = [];
            for(var p in obj)
            str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
            return str.join("&");
        },
        data: xsr
    }).success(function(response){
        $scope.filter = false;
        $scope.report = false;
        $scope.detail = true;
        $scope.detail_report = response;
    }).error(function(error){
        return;
    });                 
}
};

任何帮助将不胜感激。我正试图解决这个问题,但有些东西并没有完全联系起来。

4

1 回答 1

28

只是根据该变量显示/隐藏?
我会做:

ng-show="customerType.type == 'new'"
于 2013-06-11T16:51:37.327 回答