2015-05-13 2 views
1

Мой контроллер заполняет $ scope.gridData с json, связанным с информацией студента (StudentName и FavoriteDay).Клиентский шаблон в 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

Нет ничего плохого в использовании функции с областью действия, но у углового есть абстракция для этого: фильтры.

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> 

Или, если по какой-то причине, матричная структура не имеет смысла для вашей структуры вы можете написать его Как ты хочешь.

Смежные вопросы