22

私はangularjsの初心者です。ホームページに投稿のリストがあるアプリケーションを構築しています。そのページだけの双方向バインディングにangularjsを使用することを考えました。サンプルページから始めましたが、ここで問題が発生しました。

私のサンプルページ。angularjsがページの他の側面とやり取りしたくないので、このdivだけにng-appを使用しています。

<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 パス]angular.min.js:16 を取得しました

ここで何が欠けていますか。私は完全に混乱しているので、私を助けてください。私はangularjsとjavascriptが初めてです。

4

1 に答える 1

48

問題は、コントローラーを宣言する方法にあります。以下に示すように行う必要があります。

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

$scope2 番目の引数は、配列の要素として文字列と関数の両方を持つ配列であることに注意してください。これは、縮小化に安全なコードを記述するために使用される適切な構文です。

于 2013-06-20T17:11:30.300 に答える