作成時にAngularJSコントローラーにパラメータを渡せますか?質問する

作成時にAngularJSコントローラーにパラメータを渡せますか?質問する

ユーザー、名前、電子メールなどのプロパティを更新するために API と通信するコントローラーがあります。各ユーザーには、'id'プロフィール ページが表示されたときにサーバーから渡される があります。

この値を AngularJS コントローラーに渡して、現在のユーザーの API エントリ ポイントを認識させたいと思います。 で値を渡してみましたng-controller。 例:

function UserCtrl(id, $scope, $filter) {

$scope.connection = $resource('api.com/user/' + id)

そしてHTMLでは

<body ng-controller="UserCtrl({% id %})">

{% id %}サーバーから送信された ID を印刷します。ただし、エラーが発生します。

コントローラーの作成時に値を渡す正しい方法は何ですか?

ベストアンサー1

ノート:

この回答は古いものです。これは、望ましい結果を達成する方法についての概念実証にすぎません。ただし、以下のコメントにあるように、これは最善の解決策ではない可能性があります。以下のアプローチを支持または拒否する文書はありません。このトピックに関する詳細な議論については、以下のコメントを参照してください。

元の回答:

ng-init私はこれに「はい、簡単な init 関数を使用すれば絶対に可能です」と答えました。

plunkerの例はこちら

html

<!DOCTYPE html>
<html ng-app="angularjs-starter">
  <head lang="en">
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.min.js"></script>
    <script src="app.js"></script>
  </head>  
  <body ng-controller="MainCtrl" ng-init="init('James Bond','007')">
    <h1>I am  {{name}} {{id}}</h1>
  </body>
</html>

JavaScript

var app = angular.module('angularjs-starter', []);

app.controller('MainCtrl', function($scope) {

  $scope.init = function(name, id)
  {
    //This function is sort of private constructor for controller
    $scope.id = id;
    $scope.name = name; 
    //Based on passed argument you can make a call to resource
    //and initialize more objects
    //$resource.getMeBond(007)
  };


});

おすすめ記事