2015-04-25 4 views
0

У меня странная ситуация. У меня есть следующая часть HTML:Угловое возвращаемое значение от функции

<div><span> {{ getTitle(story.date); }}</span> </div> 

Теперь это функция регулятора:

$scope.getTitle= function (storyDate) { 
     var year = new Date(storyDate).getFullYear(); 
     if (!$scope.sectionTitleYear.contains(year)) { 
      $scope.sectionTitleYear.push(year); 
      return year; 
     } 
     else { 
      return ''; 
     } 
    }; 

и это декларация sectionTitleYear:

$scope.sectionTitleYear = []; 

теперь, когда я запускаю это код, возвращаемое значение является правильным, но в html я получаю пустую строку. Всякий раз, когда я удаляю код нажимной линии. эта работа кода прекрасна. Это толкающий линия код, который я извлекал:

$scope.sectionTitleYear.push(year); 

Пожалуйста, посоветуйте, что мне делать.

+0

ли '$ scope.story.date' существует? –

+0

Маленький намек: возврат пустой строки из вашей функции является ненужным, директива ng-bind не будет вызывать никаких ошибок, когда вы возвращаете неопределенные значения из функции. Что касается вашего первоначального вопроса, попробуйте отладить этот фрагмент кода –

+0

Dan - yes $ scope.story.date имеет значение. когда я удаляю строку push-кода в $ scope.sectionTitleYear, так что эта работа. – AnanasPie

ответ

0

Вы возвращаете год только в том случае, если он не находится в $scope.sectionTitleYear, поэтому, конечно, он будет работать, если вы удалите эту строку. Это предотвратит то, что год будет перенесен в массив.

Если вы говорите, что после того, как вы удалите эту строку код работает, возможно, вы должны всегда возвращать год, что-то вроде этого:

$scope.getTitle= function (storyDate) { 
    var year = new Date(storyDate).getFullYear(); 
    if (!$scope.sectionTitleYear.contains(year)) { 
     $scope.sectionTitleYear.push(year); 
    } 
    return year; 
}; 
+0

Да, вы правы, но я не сказал, что у меня много лет, что дублирует. И я хочу показывать только первый год каждый раз. – AnanasPie

+0

@AnanasPie - Не уверен, что я понимаю, но если вы хотите показать первый год, вам нужно заменить 'return year;' с 'return $ scope.sectionTitleYear.length? $ scope.sectionTitleYear [0]: ''; ' –

+1

Привет всем, я понял, в чем была моя проблема. Вот JsFiddle для моей проблемы - http://jsfiddle.net/478nxc0c/3/ .. Я читал, что функции дайджеста запускаются случайным образом, тем самым подняв мою проблему. – AnanasPie

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