从对象

时间:2015-08-10 08:32:28

标签: javascript asp.net angularjs

我上课了这个字段:

 public class TimesheetModel
    {
        public DateTime TaskDate { get; set; }
        public List<TimesheetListModel> TimesheetList { get; set; }

        public TimesheetModel() { TimesheetList = new List<TimesheetListModel>(); }
    }

列表与LT;&GT;有这个结构:

public class TimesheetListModel
    {
        public string ProjectName { get; set; }
        public DateTime TaskDate { get; set; }
        public string Task { get; set; }
        public decimal TimeWorked { get; set; }
        public string Note { get; set; }
    }

当我加载我的页面TimesheetModel从数据库获取数据时,它正常工作,我可以通过我页面上的angularjs查看数据。 但是我还需要选择没有重复项的ProjectNames到数组,因为TimesheetListModel列表具有ProjectName的重复项。 我用这样的代码写这个:

    $scope.bindModel = function(data) {
         $scope.model = data;
         $scope.projects = function () {
            var array = [];
            array.push($scope.model[0].TimesheetList[0].ProjectName);
            for (var i = 0; i < $scope.model.length; i++) {
                for (var j = 0; j < $scope.model.TimesheetList.length; j++) {
                            if ($scope.model[i].TimesheetList[j].ProjectName != array[i - 1]) {
                                array.push($scope.model[i].TimesheetList[j].ProjectName);
                            }
                        }
                    }
                    return array;
                };
    };

我认为我犯了错误,因为我的javascript知识不好。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

  

我修改了代码,它有arrayContains函数检查重复

   $scope.bindModel = function(data) {
      $scope.model = data;
      var arrayContains = function(arr, value) {
        for (var i = 0; i < arr.length; i++) {
          if (arr[i] === value) {
            return true;
          }
        }
      }
      $scope.projects = function() {
        var array = [];
        for (var i = 0; i < $scope.model.length; i++) {
          for (var j = 0; j < $scope.model.TimesheetList.length; j++) {
            if (!arrayContains(array, $scope.model[i].TimesheetList[j].ProjectName)) {
              array.push($scope.model[i].TimesheetList[j].ProjectName);
            }
          }
        }
        return array;
      };
    };
  

而不是编写代码,您可以使用具有实用功能的jQuery:

$.inArray(value, arr)