AngularJS $scope .users [ { ,

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,160

goforward

score -406

イメージ説明
確かに公式サイトに書いてありました

angular.module('myapp', [])
.controller('MainController',['$scope',function($scope)  {
  $scope.users = [
    {"name":"taguchi", "score":52.22},
    {"name":"tanaka", "score":38.22},
    {"name":"yamada", "score":11.11}

  ];

}]);


の$scope .users [     { ,はそれぞれなんでしょうか?すべてjavascriptで説明できるのでしょうか?
$はjqueryかphpのようにインスタンス変数か?[ は配列なのでしょうか?
数学のように大かっこ 中カッコなのでしょうか?
なぜコンマはつけて
最後に  {"name":"yamada", "score":11.11}はつけないのでしょうか?
よろしくお願いします

 <!DOCTYPE html>
<html lang="ja" ng-app>
<head>
    <meta charset="UTF-8">
    <title>Angularの練習</title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
    <script src="myscript.js"></script>
</head >
<body>
    <h1>AngularJSの練習</h1>
    <div ng-controller="mainCtrl">
    <p>{{users.length}} users.</p>
    <ul>
      <li ng-repeat="usre in users">{{user.name}} {{user.score}}</li>
    </ul>
    </div>
</body >
</html>


リンク内容

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+4

  $scope.users = [
    {"name":"taguchi", "score":52.22},
    {"name":"tanaka", "score":38.22},
    {"name":"yamada", "score":11.11}

  ];

上記をひとつひとつ見ていきましょうか。

$scopeはそれが一つの変数名です。特別な変数名だと思ってください。
phpでは変数名の最初には$を付けますが、JavaScriptでは付けても付けなくても構いません。
敢えて、おそらく特別な変数であるという意図を示すために、$scopeと最初に$が付いた変数名になっています。

「変数.要素」で変数の要素にアクセスすることができます。
user.name = "Bob"というコードが合ったとすると、user変数のname要素にBobを設定しています。

JavaScriptでは変数は事前に宣言していなくてもいきなり値を入れることができます。

上記を踏まえると、まず

  $scope.users = [

という部分は説明が付くと思います。

$scope変数のusers要素に対し、何か値を代入しようとしています。

次に、[]は配列を表します。
以下のようなコードであれば、$scope変数のusers要素を配列で初期化しているということです。

  $scope.users = []

以下のようなコードであれば、$scope変数のusers要素に対し1,2,3という配列を設定することになります。

  $scope.users = [1,2,3]

次に{}はオブジェクトを宣言する際の省略記法です。
宣言方法には色々な書き方があり、以下二つの代入式は同義です。

  //一つ目
  $scope.users = {}//初期化
  $scope.users.name = "Bob"
  $scope.users.score = "52.22"

  //二つ目
  $scope.users = {name:"Bob",score:"52.22"}

配列にはオブジェクトも入れ込むことができます。
以下コードは配列に対し空のオブジェクトを三つ入れています。

  $scope.users = [{},{},{}]

JavaScriptでは改行は文が続いているとみなされます。
下記は一つ上と同じ意味です。

 $scope.users = [
  {},
  {},
  {}
 ]

ここまで来れば分かるかもしれません。
つまり最初のコードは、$scope変数のusers要素に対し、三つのオブジェクトを格納した配列を設定していることになります。
再掲しておきます。

  $scope.users = [
  {"name":"taguchi", "score":52.22},
  {"name":"tanaka", "score":38.22},
  {"name":"yamada", "score":11.11}
  ];

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/01 09:32

    変数はそれじだいでオブジェクトなのでしょうか?
    それともデータつまりプロパティということでしょうか?

    キャンセル

  • 2017/05/01 11:19

    今、どういう理解で、それを踏まえてJavaScriptの記法のどこが納得いかないか、教えていただけると参考になるコメントができるかもしれません。

    こういうコメントが参考になりそうかな?と思い記載しますが、JavaScriptにおけるオブジェクトとは連想配列のようなものだと思ってください。Javaで言えばArrayListです。
    JavaScriptでは関数も変数として扱うことができ、オブジェクトとして扱われます。第一級関数という特徴です。
    そのため連想配列内に、例えばname=Bob,score=52.22、といったデータのほかにspeak=function(){...といった関数を変数内に入れ込むことで擬似的にクラスからのインスタンス生成のようなこともできます。

    JavaScriptは非常に自由度の高い言語で、オブジェクトの使い方一つとっても色々な書き方、考え方、ルールがあります。
    function(){}でデータ、メソッドの定義をしておきnewを使う方法もあります。

    こちらが参考になるのではないでしょうか?→http://uhyohyo.net/javascript/1_1.html

    ここまでを踏まえて最初の質問に答えますと、

    >変数はそれじだいでオブジェクトなのでしょうか?
    意図が分かりません。「それ自体で」というのがどういう意味かが掴めません。
    あえて言うならプリミティブ型はオブジェクトとして扱えませんが、それ以外は全てオブジェクトとして扱えます。
    参考→http://qiita.com/makotoo2/items/9566cebf205ef8b42505

    >それともデータつまりプロパティということでしょうか?
    オブジェクトとはデータつまりプロパティということでしょうか?という質問なのであれば、これも意図を掴みかねます。
    データつまりプロパティ、という言い方から、クラス設計のプロパティとメソッド、をイメージしているのではないかと思うのですが、コメント内に記載したとおりJavaScriptでは関数(メソッド)もオブジェクト(変数)として扱うことができます。
    そのため、オブジェクトとはデータつまりプロパティか、ということになると、概ねはいそうですという回答になるのですが、JavaScriptではメソッドもプロパティとして扱うことができるので、クラス設計におけるプロパティと同義にはなりません。
    参考→http://uhyohyo.net/javascript/1_4.html

    キャンセル

+1

[ ]
は配列です。

[1, 2]

{ }
はオブジェクトです。hashのようにも使えます。

{name: 'value'}

,については配列なので必要ですが、最後の要素の後ろの,はつけてもつけなくても構いません。

[1, 2, ]

$scope のように $ がついているのは AngularJS のオブジェクトであることを示しています。$scope は画面に表示するためのデータを保持させたりします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/01 09:33

    $scopeというオブジェクトの中に{ } が存在してもいいのでしょうか?
    データも関数もあらゆる要素もオブジェクトということになります

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.21%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る