首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何等待UI路由器在角1.5组件中解析的承诺

如何等待UI路由器在角1.5组件中解析的承诺
EN

Stack Overflow用户
提问于 2016-06-28 14:45:57
回答 2查看 1.7K关注 0票数 2

我用的是角1.5分量。我想不出如何通过解析获得数据。

你能放点光吗?

柱塞: https://plnkr.co/edit/2wv4YWn8YQvow6FDcGV0

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html ng-app="app">

  <head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <link data-require="bootstrap-css@3.3.6" data-semver="3.3.6" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.css" />
    <script>document.write('<base href="' + document.location + '" />');</script>
    <script src="https://code.angularjs.org/1.5.7/angular.js"></script>
    <script src="https://code.angularjs.org/1.5.7/angular-route.js"></script>
    <script src="app.js"></script>
  </head>

  <body>
    <ng-view></ng-view>
  </body>

</html>

app.js

代码语言:javascript
运行
复制
(function () {

    angular
      .module("app", ['ngRoute'])
      .config(function($routeProvider){
        $routeProvider
          .when("/home", {
              template: `<main 
                promise-followers="$resolve.promiseFollowers"></main>`,
              resolve: {promiseFollowers: function ($http) {
                    $http.get("https://api.github.com/users/octocat/followers")
                      .then(function(result) { 
                        return result.data;
                      }, function(result) { 
                        console.log(result);
                      });
                }
              },
          })
          .otherwise({ redirectTo: "/home" } );
      })
      .component("main", {
        template: `<h3>Demo Angular 1.5 Resolver</h3>
        <p>Promise Data from Controller : 
          <select ng-model="$ctrl.selected" 
            ng-options="option.id as option.login for option in $ctrl.followers"></select>
        </p>

        <p>Promise Data from Resolve : 
          <select ng-model="$ctrl.selected" 
            ng-options="option.id as option.login for option in $ctrl.promiseFollowers"></select>
          <span class="label label-danger">Not Working</span>
        </p>        

        <h4>Regular Selector Selected: {{$ctrl.selected}}</h4>`, 

        controller: function($http){

          var self = this;

          // This is just testing to to make sure api is working.
          $http.get("https://api.github.com/users/octocat/followers")
            .then(function(result) { 
              self.followers = result.data;
            }, function(result) { 
              console.log(result);
            });

          self.$onInit = function () {
            console.log(self.promiseFollowers);
          }    
        }
      });

})();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-28 14:48:03

您忘记了从您的promiseFollowers承诺返回一个承诺。

代码语言:javascript
运行
复制
promiseFollowers: function ($http) {
     return $http.get(...){
     }
}

在此之后,还需要定义一个bindings选项来检索从解析中传递的值。

代码语言:javascript
运行
复制
bindings: {
   promiseFollowers: '='
},

演示Plunkr

票数 2
EN

Stack Overflow用户

发布于 2016-06-28 15:14:44

https://stackoverflow.com/a/18019915/6524138确实提到,如果上面的解决方案不起作用,这应该会有所帮助。

Jist:“向控制器注入解决方案”应该可以解决您的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38079407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档