ユーザー、名前、電子メールなどのプロパティを更新するために 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)
};
});