Angularjs Argument不是函数获取字符串

时间:2013-06-20 16:55:33

标签: javascript angularjs modularity

我是angularjs的新手。我正在构建一个应用程序,其中我的主页将有一个帖子列表。我想过将angularjs单独用于双向绑定。我从一个示例页面开始,但在这里遇到了问题。

我的示例页面。我正在为这个div使用ng-app,因为我不希望angularjs与页面的任何其他方面进行交互。

<div ng-app="posts">
  <ul class="post_list" ng-controller="PostController">
    <li ng-repeat="post in posts">
    {{post.title}}
    {{post.description}}
    </li>
  </ul>
</div>

我有一个app.js文件,其中有

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

和带有

的postcontroller.js文件
(function(angular, app) {
  // Define the Controller as the constructor function.
  console.log(app);
  console.log(angular);
  app.controller("PostController",["$scope"], function($scope) {
    $scope.posts = [
      {"title":"asdf", "description":"describe"},
      {"title":"second one", "description":"second describe"},
    ];
  });
})(angular, app);

当我加载我的主页时。我正在

  

错误:参数“PostController”不是函数。有字符串   [googlecdn path] angular.min.js:16

我在这里缺少什么。请帮助我,因为我完全困惑。我是angularjs的新手,也是javascript的新手。

1 个答案:

答案 0 :(得分:48)

问题在于您声明控制器的方式。你应该这样做如下所示:

app.controller("PostController",["$scope", function($scope) {
    $scope.posts = [
      {"title":"asdf", "description":"describe"},
      {"title":"second one", "description":"second describe"},
    ];
  }]);

请注意,第二个参数是一个数组,其中包含$scope字符串和函数作为数组的元素。这是用于编写简化安全代码的正确语法。