Функция контроллера ng-if для показа директивы в нескольких путях

0

как я могу переместить логику из ng-if из html и превратить ее в функцию в контроллере?

<menu ng-if="location.path() === '/salad' || location.path() ==='/main'"></menu>

контроллер: ???

Я пытаюсь отдать, но это не помогло:

html: <menu ng-if="menuItem()"></menu>

контроллер:

$scope.menuItem = function() {

  return menuItem === $location.path('/salad') || $location.path('/main');
}
Теги:

1 ответ

1
Лучший ответ

Кажется, что нет ничего плохого в использовании этой директивы, хотя предпочтительнее использовать ng-if с выражением, а не функцией, поскольку теперь функция будет оцениваться в каждом цикле дайджеста.

Я думаю, что ваша ошибка на самом деле происходит от того, как вы написали свое выражение в menuItem.

Пытаться:

$scope.menuItem = function () {
  return ($location.path() === '/salad' || $location.path() ==='/main')
} 
  • 0
    Я только что попробовал ваше предложение, но директива <menu> не показалась, когда я изменил URL на / salad или / main. Имеет ли значение в директиве <menu> у меня больше ng-if внутри? Они также полагаются на отображение элементов в зависимости от местоположения.
  • 0
    Использование ng-if для показа на основе маршрута определенно не лучшая практика. Я предполагаю, что вы сделали что-то вроде: $ routeProvider.otherwise ({templateUrl:'thing.html ', controller:' somecontroller '}); Я бы переоценил то, как ты делаешь свой маршрут. Посмотрите на routeProvider .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню