Я видел this и this, но похоже, что может быть более простой способ.Подождите, пока переменная области не загрузится, прежде чем использовать ее в виде в angular.js
На мой взгляд, у меня есть несколько параметров меню, которые контролируются с помощью разрешения - т. Е. Не каждый может видеть представление «Панель мониторинга». Так что в моем пункте меню, на мой взгляд у меня есть что-то вроде следующего:
<li ng-show="validatePermission('Dashboard')">Dashboard</li>
В мой контроллер у меня есть метод validatePermission определить, где он смотрит на разрешения текущего пользователя. Например:
$scope.validatePermission = function(objectName) {
if $scope.allPermissions......
Кроме того, в моем контроллере я загружаю эти разрешения через $ HTTP вызова:
$http.get('permissions/' + userid + '.json').success(function(data) {
$scope.allPermissions = data;....
Вопрос заключается в том, что $ scope.allPermissions не напиваться до просмотра моделей вызов validatePermission. Как я могу дождаться загрузки всех пакетов до отображения рендеринга?
Спасибо. Означает ли это, что функция validatePermissions будет вызываться несколько раз? то есть, возможно, изначально, когда allPermissions не загружается, тогда действительно ли это будет просто вызвать его снова после его загрузки. Как он узнал, чтобы снова позвонить (после его загрузки)? Разве это не будет называться один раз? –
Я выбрал это, потому что он кажется самым простым и работает - хотя я не уверен на 100% почему. Я предполагаю, что Angular первоначально вызывает функцию validatePermissions при отображении представления, и даже если allPermissions не загружается (и я возвращаю false), он снова вызовет эту функцию при загрузке allPermissions - как-то известно, чтобы снова вызвать эту функцию. –
@ArthurFrankel - Да, выражение в 'ng-watch' будет оцениваться один раз за цикл. Угловое в целом работает так: «ng-show» не «показывает, истинно ли выражение», это «show * while», выражение «true». Другие варианты хороши, если вам действительно нужно разобраться, пока не будут загружены разрешения, но, насколько я могу судить, вас здесь нет. –