フロントエンドのバックエンドからAngularJSに値を渡す最も良い方法は何ですか?私はDjangoを使用しており、テンプレートは必要な値を吐き出すことができますが、これらの値をAngularJSに渡す際のベストプラクティスは不明です。AngularJS - バックエンドからフロントエンドへの値の受け渡し
ブログの投稿とそのコメントを考えてください。投稿IDをサービスに渡して特定のブログ投稿のすべてのコメントを取得するAngularJSサービスがあり、DjangoがHTMLテンプレートをレンダリングしていて、ポストIDですが、私はこのポストIDをAngularJSに渡し、その後にサービスに渡す必要があります。
1つのアイデアは、それを隠した<input>
に入れ、この入力をモデルに割り当てることです。あまり魅力的ではありません。
// Django (or any backend) is rendering {{ object.value }}
<div class="myDirective" data-object-id={{ object.value }}>
...
</div>
angular.module('myDirectives', []).
directive('myDirective', function() {
return {
restrict: 'C',
transclude: false,
link: function postLink($scope, $element, $attrs) {
// $attrs.objectId would have the value
}
}
});
これらの2つのアプローチがうまく見える:
もう一つは、私がこの属性の値にアクセスすることができるだろう、このようにディレクティブを持っており、このディレクティブに属性にこの値を渡すことです。しかし、私はこれを行うよりクリーンな方法があるのだろうかと思っていますか? AngularJSのベストプラクティスに従うアプローチはありますか?
ありがとうございます。バックエンド(Django)が純粋に残りのAPIを提供している間に、私のアプリケーションの約90%がクライアント側に変換されていると言えます。 – abstractpaper
ドキュメントによれば、ng-initはng-repeatでのみ適切です。より良い方法は、htmlからコントローラにデータを渡すカスタムディレクティブを作成することです。 – Charlesthk
DjangoコンパイラとAngularJSの両方がこのソリューションでどのように動作するのか不思議です...彼らは一度に同じコード領域を読んでいると思いますか? – Ricardo