我上课了这个字段:
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知识不好。请帮我解决这个问题。
答案 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)