В моем приложении 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
});
}
};
}
Релевантный запрос на тягу (с тегом для 1.5.0-rc.0): https://github.com/angular/angular.js/pull/13400 –
Я думаю, это помогает прочитать правильную версию руководства. Спасибо! –