2017-05-27 14 views
0

私はAngularJSを初めて使っています(完了したチュートリアルはほとんどありません)。 すべてのユーザー(/ api/usersなど)に関するJSON情報と、指定されたユーザーの詳細(/ api/user/idなど)を示す別のAPIを提供するAPIがあります。 今、私は、/ user/idページを指すように/ usersページ内の各ユーザのリンクをgetUserDetailsという関数呼び出しを使って作成しようとしています。api2へのhttp呼び出しが成功した後、http:// http.get(api)が呼び出されました

問題:私は

質問ユーザー負荷が罰金/ /中/ユーザーIDのページをユーザーのデータを見ることができないけど、:私はクロームデバッガを使用している場合は、私が見る/ユーザーのhttpコール作品良い。任意のユーザリンクをクリックすることで、ライン11でデバッガの声明を打つが、それは後に、それはまた、なぜこれが(ライン5デバッガに起こっている5.

  1. でデバッガを打つ主な原因これは私の「ユーザー」の変数はHTMLページでは得られません)?

  2. これに対応する方法はありますか? 3行目のユーザー変数を宣言すると便利ですか? (個人的にはこれを試していませんが、これは正しい方法ではないと感じていますか?)

  3. APIのややこしいところ -/api/users内のすべてのユーザーの説明があります。その場合、特定のユーザー情報を新しいページに渡すようにコントローラー(およびhtml)を変更するにはどうすればよいですか?このアプローチは推奨されていますか?

制約:私は関与$の範囲で任意の提案は役立つだろうので、$スコープ変数せずにそれをロードすることができません。 PHPの解析を無視するためには、未処理のタグも必要です。

既存の質問を検索しようとしましたが、多くの情報が見つかりませんでした。それが良いキーワードの不足のためにあった場合は、有用な既存の答えを私に指摘してください。ここで定義:)以下

はuserlist.htm(すべてのユーザの番組リスト)

{% raw %} 
<div ng-controller="UserController"> 
    <div ng-repeat="user in users"> 
     <h3><a href="/user/{{ user.id }}" ng-click="getUserDetails(user.id)">{{ user.name }}</a></h3> 
     <!-- userdetails.htm is called with this --> 
    </div> 
</div> 
{% endraw %} 
{% put scripts %} 
    <script src="{{ 'assets/javascript/UserController.js'|theme}}"></script> 
{% endput %} 

あるuserdetails.htmは、(任意の選択されたユーザの詳細を示している)

{% raw %} 
<div ng-controller="UserController"> 
    <h3>{{ user.name }}</h3> 
    <!-- Some more user information here--> 
</div> 
{% endraw %} 

{% put scripts %} 
    <script src="{{ 'assets/javascript/UserController.js'|theme}}"></script> 
{% endput %} 

AngularJSコントローラー:

app.controller("UserController", ['$scope', '$http', '$log', function ($scope, $http, $log) { 
    var userCtrlScope = $scope; 

    $http.get('/api/users').then(function(data){ 
     debugger; 
     userCtrlScope.users = data; 
    }); 

    userCtrlScope.getUserDetails = function(id){ 
     $http.get('/api/user/' + id).then(function(data) { 
      debugger; 
      userCtrlScope.user = data; 
     }); 
    }; 
}]); 

ありがとうございました!

答えて

0

私はあなたがhref="/user/{{ user.id }}"が必要な理由を知らない、それはuser/5ルートに行くでしょう。このルートに行くことが目標であれば、そのルートとその内部のコントローラーを分離しておく必要があります。$http.get('/api/user/' + id)を呼び出してください。は、例えば($routeParams.id)、anglejsルーターを使用する場合は$stateParams$stateParams.id) UIルーターを使用します。どのようにロードuserdetails.htm

+0

現在、laravelは私のためにuserdetails.htmを読み込みます。あなたの提案に応じて、UI Router/Angular JS Routerを試してみましょう。迅速な対応と提案をいただき、ありがとうございます。 :) – DSR

関連する問題