javascript - thinkster.io 教程上的错误 : [ng:areq] Argument is not a function, 未定义

标签 javascript angularjs yeoman yeoman-generator-angular

[更新] 这是我的一个愚蠢的打字错误。谢谢dfsq!

这里有一个类似的问题,我的代码遵循推荐的答案,所以请不要将其标记为重复。

在我的本地主机中,我收到以下错误:Error: [ng:areq] Argument 'PostCtrl' is not a function, got undefined

app.js 的内容:

/* global app:true */
/* exported app */
'use strict';

var app = angular
  .module('redjsApp', [
    'ngAnimate',
    'ngCookies',
    'ngResource',
    'ngRoute',
    'ngSanitize',
    'ngTouch',
    'firebase'
  ])
  .constant('FIREBASE_URL', 'https://blazing-fire-6602.firebaseio.com/')
  .config(function ($routeProvider) {
    $routeProvider
      .when('/', {
        templateUrl: 'views/posts.html',
        controller: 'PostCtrl'
      })
      .when('/about', {
        templateUrl: 'views/about.html',
        controller: 'AboutCtrl'
      })
      .otherwise({
        redirectTo: '/'
      });
  });

scripts/services/post.js 的内容:

'use strict';

app.factory('Post', function ($firebase, FIREBASE_URL) {
  var ref = new Firebase(FIREBASE_URL + 'posts');
  var posts = $firebase(ref.child('posts')).$asArray();
  console.log($firebase(ref.child('posts')).$asArray());

  var Post = {
    all: posts,
    create: function (post) {
      return posts.$add(post);
    },
    get: function (postId) {
      return $firebase(ref.child('posts').child(postId)).$asObject();
    },
    delete: function (post) {
      return posts.$remove(post);
    }
  };

  return Post;

});

scripts/posts.js 的内容:

'use strict';

app.controller('PostsCtrl', function ($scope, Post) {
  $scope.posts = Post.all;

  $scope.post = {url: 'http://', 'title': ''};

  $scope.submitPost = function () {
    Post.create($scope.post).then(function () {
      $scope.post = {url: 'http://', 'title': ''};
    });
  };

  $scope.deletePost = function (post) {
    Post.delete(post);
  };

});

posts.html 的内容是:

<div ng-repeat="post in posts">
  <a ng-href="{{ post.url }}">{{ post.title }}</a>
  <a ng-click="deletePost(post)">delete</a>
</div>
</div>
<form ng-submit="submitPost()">
    <input type="text" ng-model="post.title" />
    <input type="text" ng-model="post.url" />
    <input type="submit" value="Add Post" />
</form>
Posts: {{ posts}} <br />
Post: {{post}}

仅渲染 html,不渲染任何关联的 js。该应用程序是使用 yeoman 搭建的。帮助将不胜感激!

最佳答案

您的 Controller 名称有拼写错误:

app.controller('PostsCtrl', ...

在路线上时

controller: 'PostCtrl'

关于javascript - thinkster.io 教程上的错误 : [ng:areq] Argument is not a function, 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27766622/

相关文章:

javascript - 如何循环遍历2个对象数组并通过匹配id进行合并

html - 切换开关时,Angular md-switch .md-thumb 颜色显示不正确

css - 使用 Grunt Compass 任务生成没有调试信息的生产 CSS 代码

git - 让 grunt.js 在一个预先存在的 yeoman 项目上工作

javascript - 在 Meteor 中执行大型操作

Javascript。当前 AJAX 停止后运行 AJAX 流

javascript - 如何获取从文件导入javascript的路径

javascript - 如何让 ng-show 在 ng-repeat 中在该范围外声明的变量上工作?

angularjs - 这是否意味着 "Any MIME type"?

javascript - 如何将 angularJS 与 Yeoman 的 webapp-generator 一起使用