2016-07-22 5 views
0

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

<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

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

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

Try:

$scope.menuItem = function() { 
    return ($location.path() === '/salad' || $location.path() ==='/main') 
} 
+0

я просто попытался ваше предложение, но директива

не показывать, когда я изменил URL в/салат или/основной. Имеет значение в директиве У меня есть больше ng-if внутри? Те ng-if также полагаются на элементы, основанные на местоположении. – peeli

+0

Использование ng-if для показа на основе маршрута определенно не является лучшей практикой. Я предполагаю, что вы сделали что-то вроде: $ routeProvider.otherwise ({ templateUrl: 'something.html', контроллер: 'somecontroller' }); Я бы переоценил, как вы делаете свою маршрутизацию. Взгляните на [routeProvider] (https://docs.angularjs.org/api/ngRoute/provider/$routeProvider). – jktin12

+0

это действительно работало, мне просто нужно сделать жесткое обновление – peeli

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