为什么resolve方法没有将任何数据返回给控制器?

时间:2018-05-21 19:26:58

标签: javascript angularjs ngroute

我从youtube开始关注本教程,并尝试将解析方法getposts添加到contactController中。我不知道为什么它没有返回任何价值。

有人能告诉我,我在这里做错了吗?我在stackoverflow中花了一个小时的时间,但没有希望:(

var app = angular.module('simpleApp', ['ngRoute', 'ngSanitize']);

app.config(['$routeProvider', function($routeProvider){
  $routeProvider
  .when('/', {
    templateUrl: './partials/home.html'
  })
  .when('/contact', {
    controller: "contactController",
    controllerAs: "contactCtrl",
    templateUrl: './partials/contact.html',
    resolve:{
      getposts: function($http) {
        return $http.get('https://jsonplaceholder.typicode.com/comments/1')
                    .then(function(response) {
                      // console.log(response.data) returns api data
                        return response.data;
        })
      } 
    }
  }).controller('contactController', ['$scope', '$http', function($scope, $http, getposts){

  vm = this;

  console.log(getposts); // not getting response.data from getposts

  vm.posts = getposts;

}])

// contact.html
<div>
  <div class="row">
    dfgdfg
    <div class="col-lg-6">
      {{ posts }}
    </div>
  </div>
</div>

问题1:如果我删除两行

controller: "contactController",
controllerAs:"contactCtrl"

并在ng-controller="contactController"的主div中添加contact.html我收到错误

Error: [$injector:unpr] Unknown provider: getpostsProvider <- getposts <- contactController

问题2:如果添加了那些控制器和控制器线,并且从视图中删除了ng-controller="contactController",那么我需要添加 $ scope将视图输出到视图。如果我vm.posts = getposts;它在视图中没有显示json响应。哦该死的我很困惑。

1 个答案:

答案 0 :(得分:3)

基本上你错过了在控制器DI数组的内联数组注释中注入getPosts

controller('contactController', [
   '$scope', '$http', 'getposts', //<-- you missed to inject here
      function($scope, $http, getposts){