1. ホーム
  2. javascript

[解決済み] AngularJSのコントローラ作成時にパラメータを渡すことは可能ですか?

2022-02-15 13:33:18

質問

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を表示する。

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

どのように解決するのですか?

注意事項

この回答は古いです。これは、望ましい結果を達成する方法についての概念的な証明にすぎません。しかし、以下のコメントにあるように、これは最良の解決策ではないかもしれません。私は、以下のアプローチをサポートまたは拒否するための文書を持っていません。このトピックに関するさらなる議論については、以下のいくつかのコメントを参照してください。

オリジナルの回答

に回答しました。 はい、できます。 ng-init とシンプルなinit関数で構成されています。

以下は、その例です。 プランカー

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)
  };


});