【问题标题】:Angular Js and gapi for routed appAngular Js 和 gapi 用于路由应用程序
【发布时间】:2015-03-12 14:42:01
【问题描述】:

我有一个类似this 问题的任务。但主要区别在于我需要两个控制器用于两条不同的路线。就像两张不同的桌子。 ../table1 和 ../table2。每个表中的数据必须从谷歌云端点(通过 gapi)查询。如何根据我的情况调整初始化顺序?另外,我希望有一个深度链接的可能性:用户可以从 /table1 而不是“根路径”开始。

【问题讨论】:

  • 你知道 ui-router github.com/angular-ui/ui-router 用它你可以用它自己的控制器和 url 模式定义状态。
  • 是的,我使用 ui-router 并且可以为每个 url 定义控制器。我的问题是:如何使用来自谷歌端点的一些数据初始化每个控制器。 $window.initGapi 函数放在哪里以及它是如何工作的?
  • 您可以创建一个包装 google api 对象的服务,在控制器或解析上,您可以注入您创建的服务。正如您在问题中提到的那样,您可能需要钓鱼者应用程序的惰性引导。 (在 googleOnLoadCallback 函数中)
  • 在此处查看文档以了解延迟引导。 docs.angularjs.org/guide/bootstrap
  • 是的,我尝试过这种方式,但不了解细节。所以,我有全局函数 var init = function() { window.initGapi();加载gapi lib后调用。我需要在哪里定义 window.initGapi() 方法?在上一个问题中,这个方法是在单个控制器中定义的: $window.initGapi = function() {gapiService.initGapi(postInitiation);} 我怎样才能为几个不同的控制器做同样的效果?

标签: javascript angularjs google-app-engine google-cloud-endpoints google-api-js-client


【解决方案1】:

您可以使用“解析”从外部服务获取数据,然后将解析的名称注入控制器,就像服务获取注入一样。请注意,您可以将解析注入仅附加到状态的控制器。在此处查看文档https://github.com/angular-ui/ui-router/wiki#resolve

例如;

$stateProvider.state('myState', {
      resolve:{

         googleData:  function($http){
            return $http({method: 'GET', url: '/someUrl'});
         }
      },
      controller: function($scope, googleData)
      {
          $scope.simple = googleData.value;
      }
   })

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 2016-04-14
    • 2018-12-10
    • 2013-10-24
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多