在AngularJS中使用$ http或$ timeout与$ stateProvider

时间:2017-12-08 14:46:58

标签: javascript angularjs ajax

我来自这个问题Is it possible to load a template via AJAX request for UI-Router in Angular?

我希望使用state加载给定$http的模板。

ui.router个文档显示了在$timeout个配置中使用$http$stateProvider的示例,例如

  

或者您可以使用可以注入的模板提供程序功能   访问本地,并且必须返回模板HTML,如下所示:

$stateProvider.state('contacts', {   templateProvider: function
 ($timeout, $stateParams) {
   return $timeout(function () {
    return '<h1>' + $stateParams.contactId + '</h1>'
   }, 100);   
 } 
})

但是,据我了解,$stateProvider必须在module.config阶段进行配置,$timeout不可用。我找不到任何示例,说明如何根据docs提供的示例完全访问$timeout(或$http){/ 1}}。

是否有办法访问文档中定义的$stateProvider$timeout?我是否在另一个点配置状态?有没有其他方法可以做到这一点,我忽视了?

1 个答案:

答案 0 :(得分:2)

templateProvider函数本身使用注入服务注入依赖项,它与配置阶段无关。

所以你应该只需要在函数中注入$http即可。如果您看到该示例,则$timeout$stateParams在配置阶段也不可用,但它们在templateProvider函数中正常工作。

例如,以下代码段会返回HTTPBin的内容:

templateProvider: function($http) {
  return $http.get('https://httpbin.org/get')
    .then(function(response) {
      return JSON.stringify(response.data);
    });
  }

有关详细信息,请参阅this fiddle