2016-01-22 8 views
2

В моем приложении Angular v1.4.8, используя ngRoute, у меня есть маршрут с разрешением, которое я хочу получить в функции ссылки по специальной директиве.

Согласно документации:

Для облегчения доступа к устраненных зависимости от шаблона, то решительность карта будет доступна на scope маршрута, под $resolve (по умолчанию) или обычая имя, указанное resolveAs .

... пока $resolve не определен на scope свойстве в функции связи моей заказной директивы - даже тогда, когда я смотрю его изменения.

Почему $resolve не доступен на scope?

Код: (JSFiddle)

angular.module('myApp', ['ngRoute']) 
    .config(routeConfig) 
    .directive('myDirective', myDirective) 
; 

function routeConfig($routeProvider) { 
    $routeProvider 
    .when('/', { 
     resolve: { 
     data: function($q) { 
      var deferred = $q.defer(); 
      deferred.resolve('foo'); 
      return deferred.promise; 
     } 
     }, 
     template: '<my-directive></my-directive>' 
    }) 
    .otherwise('/') 
    ; 
} 

function myDirective($route) { 
    return { 
    link: function(scope, iElement, iAttrs) { 
     console.log($route.current.locals); // contains data 
     console.log(scope.$resolve); // undefined 
     scope.$watch(function() { 
     return scope.$resolve; 
     }, function(newValue) { 
     console.log(newValue); // undefined, never changes 
     }); 
    } 
    }; 
} 

ответ

3

Этот пункт находится в документации для версии 1.5, но не в документации версии 1.4.x, что вы используете. Так что это что-то новое в 1.5.

+0

Релевантный запрос на тягу (с тегом для 1.5.0-rc.0): https://github.com/angular/angular.js/pull/13400 –

+0

Я думаю, это помогает прочитать правильную версию руководства. Спасибо! –

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

  • Нет связанных вопросов^_^