2017-04-05 37 views
0

我想注入一個服務到使用$ routeProvider的解析屬性的控制器,但我運行它時遇到此錯誤。任何建議都會很棒。提前致謝。問題ngRoute注入解決方案服務到組件控制器

Error: [$injector:unpr] Unknown provider: messageProvider <- message

GitUserService.js

module.exports = function (app) { 
    app.factory('GitUser', ['$http', function ($http) { 
     return { 
      GetGitUser: function (username) { 
       return $http.get('https://api.github.com/users/' + username) 
       .then(function success(response) { 
        return response.data.login; 
       }, function error(response) { 
        return console.log("error"); 
       }); 
      } 
     }; 
    }]); 
}; 

route.js

module.exports = function (app) { 
    require('../../services/GitUserService')(app); 

    app.config(['$routeProvider', function ($routeProvider) { 
     $routeProvider.when('/angularhome', { 
      template: '<home></home>', 
      resolve: { 
       message: ['GitUser', function (GitUser) { 
        return GitUser.GetGitUser('test'); 
       }] 
      } 
     }) 
    }]); 
}; 

HomeController.js

require('./Home.scss'); 

module.exports = function (app) { 
    app.component('home', { 
     templateUrl: 'Content/app/components/home/Home.html', 
     controller: ['message', HomeController] 
    }); 

    function HomeController(message) { 
     this.name = message; 
    } 
}; 

index.js

module.exports = function (app) { 
    require('./route')(app); 
    require('./HomeController')(app); 
}; 
+0

https://docs.angularjs.org/guide/component#components -as-route-templates –

+0

請參見[AngularJS開發人員指南 - 組件作爲路由模板](https://docs.angularjs.org/guide/component#components-as-route-templates)。另外請注意,'GitGitUser'函數將**拒絕的承諾轉化爲成功的承諾。請參閱[使用'$ q'的角度執行順序](http://stackoverflow.com/questions/34324153/angular-execution-order-with-q/34326388#34326388) – georgeawg

+0

感謝球員,閱讀您提供的鏈接解決問題! – Ron

回答

0

更新我的代碼基礎上的反應,這是該修補程序。

HomeController.js

require('./Home.scss'); 

module.exports = function (app) { 
    app.component('home', { 
     templateUrl: 'Content/app/components/home/Home.html', 
     controller: HomeController, 
     bindings: { 
      name: '<' 
     } 
    }); 

    function HomeController() { 
     this.name = name; 
    } 
}; 

route.js

module.exports = function (app) { 
    require('../../services/GitUserService')(app); 

    app.config(['$routeProvider', function ($routeProvider) { 
     $routeProvider.when('/angularhome', { 
      template: '<home name="$resolve.message"></home>', 
      resolve: { 
       message: ['GitUser', function (GitUser) { 
        return GitUser.GetGitUser('test'); 
       }] 
      } 
     }) 
    }]); 
};