2015-05-13 52 views
1

我的控制器使用与学生信息相关的json(StudentName和FavoriteDay)填充$ scope.gridData。AngularJS中的客户端模板

<table> 
     <thead> 
      <tr> 
       <td><b>Format</b></td> 
       <td><b>Day of Month</b></td> 
      </tr> 
     </thead> 
     <tbody> 
      <tr ng-repeat="i in gridData"> 
       <td>{{i.StudentName}}</td> 
       <td>{{i.FavoriteDay}}</td> <-- 
      </tr> 
     </tbody> 

的FavoriteDay值从SQL得到的是数字1到7,但我想用实际的天像周一,周二,以取代他们。所以我有功能类似这样

function changeToDay(day) { 
    if (day == '1') return 'Monday' 
    if (day == '2') return 'Tuesday' 
    ... 
    } 

而且用这个代替了这个html

<td> {{changeToDay(i.Favorite)}} </td> 

但是这似乎不起作用。

请建议正确的方法?

回答

1

使用作用域函数没什么问题,但Angular对此有一个抽象过滤器

app.filter('day', function() { 
    var text = ['Sunday', 'Monday', ...]; 
    return function(day) { 
    return text[day]; 
    }; 
}); 

那么你可以使用它全球在您的应用程序:

<td> {{ i.Favorite | day }} </td> 
2

你的功能在范围内,你可以删除所有IFS语句和做这样的:

var days = ['sunday','monday']....; 

$scope.changeToDay = function(day) { 
    return days[day]; 
} 

<td> {{changeToDay(i.Favorite)}} </td> 

或者,如果由于某种原因,阵列结构没有意义的,你的结构,你可以把它写像你要的那样。