2016-01-22 82 views
0

我一直在学习角最近和创建引用一个新的网站我有一个教程中创建的过程。按照我被告知的所有步骤,出于某种原因,我得到这个错误。奇怪的是,它显示为某种网址。这里的“错误”:角控制器是不是一个函数,得到了不确定

http://errors.angularjs.org/1.4.9/ng/areq?p0=PostCtrl&p1=not%20a%20function%2C%20got%20undefined 

删除所有url乱码叶子PostCtrl不是一个函数得到了undefined。

我不明白为什么,我找遍了整个堆栈溢出和所有的常见错误,例如使用全球范围内,不登记控制器,而且似乎其他常见的错误不会是原因。这是控制器和玉文件。

控制器:

var app = angular.module("app", []); 

(function() { 

    var PostCtrl = function ($scope, $log, $location) { 
     $scope.posts = []; 

     $scope.post = function (title, content) { 
      $scope.title = title; 
      $scope.content = content; 
      $log.info("Posting article: " + title + "\n" + content); 
      $scope.posts.push([title, content]); 
     }; 
    }; 

    app.controller("PostCtrl", ["$scope", "$log", PostCtrl]); 

})(); 

玉文件:(NG-应用= “APP”)是布局文件内,与所有其他的脚本涉及角沿。

extends partials/layout 

block scripts 
    script(src="app/controllers/PostCtrl.js") 

block content 
    .body(ng-controller="PostCtrl") 
     .row 
      .col-xs-12 
       form(class="form-horizontal" ng-submit="post(title, content)") 
        .form-group 
         label(for="inputTitle" class="col-sm-2 control-label") Title 
         .col-sm-10 
          input(type="text" class="form-control" id="inputTitle" placeholder="Title" ng-model="title") 
        .form-group 
         label(for="inputContent" class="col-sm-2 control-label") Content 
         .col-sm-10 
          textarea(class="form-control" id="inputContent" placeholder="Content" ng-model="content") 
        .form-group 
         .col-sm-offset-2.col-sm-10 
          button(type="submit" class="btn btn-default") Post 

     hr 

     .row 
      .col-xs-12 
+3

你忘一个依赖在创建角控制器'app.controller的( “PostCtrl”,[ “$范围”, “$日志”,PostCtrl]);'=>'” $ location“'丢失。 – FlorianTopf

+0

有趣的是,$ location是默认的依赖项吗?我一定忘记了,但不记得马上使用它。 – Jordan

+0

你是否有这样一行'var app = angular.module(“app”,[]);'它是你的其他脚本,在'app.js'还是其他地方? – oKonyk

回答

0

@FlorianTopf化险为夷删除它。我没有包含$ location作为依赖项。新PostCtrl控制器:

(function() { 

    var PostCtrl = function ($scope, $log, $location) { 
     $scope.posts = []; 

     $scope.post = function (title, content) { 
      $scope.title = title; 
      $scope.content = content; 
      $log.info("Posting article: " + title + "\n" + content); 
      $scope.posts.push([title, content]); 
     }; 
    }; 

    app.controller("PostCtrl", ["$scope", "$log", "$location", PostCtrl]); 

})(); 
+0

奇怪的事情,这对工作对我来说,如果我不添加$位置... http://plnkr.co/edit/qlHy66ENQ6j7CXPLKFlU?p=preview – eesdil

+0

是的,我不明白为什么无论是。我觉得我记得使用没有$ location服务的控制器。 – Jordan

0

您正在启动两倍的控制器。从HTML .body(ng-controller="PostCtrl")

+0

是不是指向控制器的唯一指令?该脚本参考只是带来了代码。 – Jordan

+1

是的,你是正确的,这是晚... – eesdil

+0

哈哈哈哈,让我笑了。可以理解的;) – Jordan

相关问题