注入$ timeout时,templateProvider无提示失败

时间:2014-12-03 19:05:35

标签: angularjs angular-ui-router

看看这个显示问题的简单回购: https://github.com/juanmarinbear/app

使用此templateProvider函数时:

function template() {
  return '<div data-ng-include=\"\'/app/home/home.html\'\"</div>';
}

模板加载没有问题。

使用此templateProvider函数时:

function templateBreaks($timeout) {
  return $timeout(function() {
    return '<div data-ng-include=\"\'/app/home/home.html\'\"</div>';
  });
}

模板无法加载,控制器无法实例化。没有显示错误。

3 个答案:

答案 0 :(得分:3)

通过添加:

尝试正确注入$timeout依赖项
templateBreaks.$inject = ['$timeout'];

这应该可以解决问题。

您的代码似乎可以在AngularJS 1.2或更低版本中正常工作(因此它适用于Plnkr)但是从AngularJS 1.3开始,似乎需要显式依赖注入。

希望有所帮助!

答案 1 :(得分:0)

我猜这是一个同步问题,因为$ timeout服务返回一个promise,而non-timeout版本返回一个字符串。

你可以“等待”然后返回字符串。

答案 2 :(得分:0)

技术上与上述相同的最终解决方案,但如果您查看Sample App,它还会显示您可以使用其他语法:

templateProvider: ['$timeout', templateBreaks],