Angular ngRoute:为什么$ resolve在指令链接函数的作用域中不可用?

时间:2016-01-22 23:04:11

标签: angularjs ngroute resolve

在使用ngRoute的Angular v1.4.8应用程序中,我有一个解决方案,我希望在自定义指令的链接功能中访问。

根据文件:

  

为了更方便地从模板访问已解析的依赖项,   解析地图将在路线的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 个答案:

答案 0 :(得分:3)

此段落在1.5版本的文档中,但不在您正在使用的1.4.x版本的文档中。所以这是1.5中的新内容。