2017-05-14 65 views
1

伙计们我有一个模型如下,从Ajax调用返回。AngularJS int映射不工作?

public partial class GroupForm 
{ 
    [Key] 
    public virtual int Id { get; set; } 
    public virtual int? GroupId { get; set; } 
    public virtual int? FormId { get; set; } 
    public virtual int? Frequency { get; set; }  
} 

在角Ajax调用我GroupForm的列表,然后用NG-重复展现FormID和频率,而是表示频率int值,我想显示字符串,所以我做了映射,但它只显示GroupId,频率没有显示。 我的控制器部分如下:作为folloed

FrequencyMap = { 
     1: "Annual", 
     2: "Monthly", 
     3: "Half Year" 
    } 

    $scope.mapFrequency = function (col) { 
     return FrequencyMap[col]; 
    }; 

而且我前angualrJS代码:

<ul> 
       <li ng-repeat="w in GroupForm"> 
        {{ w.FormId+ ', '+mapFrequency(w.Frequency)}} 
       </li> 
      </ul> 

我使用这个代码,Ajax调用返回三个GroupForm记录,它只能显示3的GroupId,但频率字符串丢失。但是,如果我使用w.Frequency,它可以显示int值。 请指点

我如何获得GroupForm如下:

$scope.GetAllGroupForms = function (Id) { 
     var url = '/GroupForm/Details/' +Id; 
     $scope.loading = true; 
     DataSvc.getAjaxData(url) 
     .then(function (data) { 
      //success   
      $scope.GroupForm = data.data; 
      $scope.loading = false; 
     }, function (httpStatus) { 
      //failed 
      $scope.hasErrors = true; 
      if (httpStatus === 404) { 
       $scope.errorMessage = "Couldn't retrieve Users Info"; 
      } else { 
       $scope.errorMessage = 'The system could not process your request, please try again or contact the system administrator.'; 
      } 
      $log.warn(httpStatus); 
      $scope.loading = false; 
     }); 
    }; 
+0

mapFrequency后'缺少一个右括号的方式(w.Frequency' – chiliNUT

+0

是你的ng-repeat实际上工作吗?你在视图中获得3个列表项... – Bowofola

+0

我添加了缺失的闭合parens,但仍然不起作用 –

回答

0

抽象逻辑到你的范围。如果你这并不工作,那么什么是错的或者与您的数据,或者你设置GroupForm

angular 
 
    .module('demo', []) 
 
    .controller('demoController', controller); 
 
    
 
function controller($scope) { 
 

 
    var frequencyMap = { 
 
    1: "Annual", 
 
    2: "Monthly", 
 
    3: "Half Year" 
 
    }; 
 
    
 
    $scope.GroupForm = [ 
 
    { 
 
     FormId: 123, 
 
     Frequency: 3 
 
    }, 
 
    { 
 
     FormId: 456, 
 
     Frequency: 1 
 
    }, 
 
    { 
 
     FormId: 789, 
 
     Frequency: 2 
 
    } 
 
    ]; 
 

 

 
    function getFrequency (frequencyId) { 
 
    return frequencyMap[frequencyId]; 
 
    } 
 

 
    $scope.formatGroupFormItem = function(groupForm) { 
 
    var frequency = getFrequency(groupForm.Frequency); 
 

 
    var result = groupForm.FormId; 
 
    if(frequency) { 
 
     result += ', ' + frequency; 
 
    } 
 

 
    return result; 
 
    }; 
 
}
<head><script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script></head> 
 
<body ng-app="demo" ng-controller="demoController"> 
 
    <ul> 
 
    <li ng-repeat="form in GroupForm"> 
 
     {{ formatGroupFormItem(form) }} 
 
    </li> 
 
    </ul> 
 
</body>

+0

非常感谢你的回答。我使用这个,但没有显示,即使formId消失了。它只显示三个点,这意味着我猜三个记录 –

+0

你的控制台上是否有任何错误? – Bowofola

+0

不,Cuz我以前可以用Id和FormId获得所有三个GroupForm。谢谢 –