无法在routeprovider中注入控制器

cannot inject controller in routeprovider

本文关键字:注入 控制器 routeprovider      更新时间:2023-09-26

我仍在angularJS中执行以提高我的知识,但现在我正在努力学习路由,无法在路由模板中使用控制器属性。我读了很多教程,它应该可以像现在这样工作,所以我正在粘贴代码片段。

Javascript

angular.module('greetings', ['ngRoute'])
.service("Addcontent", function($http, $q){
     this.name = "Nome";
     this.familyName = "Cognome";
     me = this;
     me.tipi= [];
     this.tipi = me.tipi;
     this.selectedOption = this.tipi[0];
     this.getTipi = function() {
         var deferred = $q.defer();
            $http.get("http://localhost:8090/my-site/data.json").success(function(data) {
                  me.tipi = data;
                 me.selectedOption = me.tipi[0];
                 deferred.resolve( {options: me.tipi, selectedOption: me.selectedOption} );
             }).error(function(){
                 console.log("error");
             });
         return deferred.promise;
     };
}).controller("renameAddContentController", function($scope, $window, $http, Addcontent, $q, $routeParams, $route){
      this.name = Addcontent.name;
      console.log(this.name);
      this.familyName = Addcontent.familyName;
      consolelog(this.familyName);
      var ctrl = this;
        Addcontent.getTipi().then(function(data) {
            ctrl.tipi = data.options;
        });
        ctrl.selectedOption = $routeParams.showName;
        console.log(ctrl.selectedOption);
}).config(function ($routeProvider, $locationProvider){
  $routeProvider
    .when('/greeted/:showName',
     {
        controller:'controllers.renameAddContentController',
        controllerAs: 'rename',
        templateUrl:'/my-site/greeted.html'
     })
    .otherwise({ redirectTo: '/' })
    $locationProvider.html5Mode(true);
});

正如你所看到的,有一个服务,一个控制器和一个路由要找到。模板非常简单:

<h3>Greeting:</h3>
<span>
  {{rename.selectedOption}} {{rename.name}} {{rename.familyName}}
  <br/>
</span>

主html也很简单:

  <a href="/my-site/greeted/{{greeting.selectedOption}}">Greet</a>
  <span ng-view>
    </span>

(问候语属于本例中未包含的其他控制器)。。。

错误表明控制器不是一个函数,因此它不会解析模板中提到的属性。。

有人能帮忙吗?

您的控制器名称位于:

$routeProvider
    .when('/greeted/:showName',
     {
        controller:'controllers.renameAddContentController',
        controllerAs: 'rename',
        templateUrl:'/my-site/greeted.html'
     })

应该只有前面定义的renameAddContentController,而不是controllers.renameAddContentController