サーバーを起動するapp.jsファイルにこのルートがあります
_app.get('/view/:item_id', function(req,res){
var A = 5;
res.render('view_item');
_
そして、私はこれを私のview_item.htmlに持っています:
_<p>{{A}}</p>
_
変数値-5を表示したいのですが、jadeなどのテンプレートエンジンを使用している場合は簡単です。サーバーコードの3行目をres.render({A:A},'view_item');
に変更できます。
しかし、私はテンプレートエンジンとしてhtmlを使用しています。これまでの私の調査によると、angularでテンプレートエンジンを使用することは通常は悪い考えであり、angularの組み込みテンプレートシステムを使用してそれを行う方法は常にあります。どうすればよいですか?これ?どういうわけかそれを$ scopeに渡して、次のように含めますか?
_<script>
$scope.A = {{A}};
</script>
_
私はこれがどこでも行われているのを見たことがないので、それが進むべき道だとは思いません。
これは2段階のプロセスです。
サーバー側
//app = express();
app.get('/api/:paramID1/:paramID2',function(req, res){
return res.json({ A: 5 });
});
クライアント側では、次のようなサービスを呼び出すためにajax呼び出しが必要です。
$http.get( "/api/1/abc").success(function( data ) {
$scope.A= data; //from your sample;
alert( "Load was performed. " + data );
});
RESTを使用する場合、POST、DELETE、UPDATE、またはGETの例で説明したものなど、ニーズに応じて呼び出すことができるさまざまなタイプの「メソッド」があることに注意してください。
Angularを使用している場合は、おそらくシングルページアプリを構築する必要があります。これは、最新のフロントエンドフレームワークのほとんどに当てはまります。SPAの場合は、基本的なhtmlファイル(おそらくindex.html
)次に、フレームワークが他のすべてのレンダリングを処理します。サーバーがテンプレートを発行する場合もありますが、それ自体がレンダリングされることはありません。
app.get('/view/:item_id', function(req,res){
これは、何かをレンダリングしたり、HTMLを返したりするものであってはなりません。代わりに、フロントエンドがレンダリングに使用するデータを返す必要があります-できればJSONとして。
res.json({A: 5});
次に、Angularを使用すると、次のようなことができます
$http.get("/view/1").success(function (data) {
ctrl.A = data.A;
});
あなたのhtml/templateは次のようなものになります
<div ng-controller="ctrl as ctrl">
<div>{{ctrl.A}}</div>
$http.get
が完了すると、ctrl.A
が入力されます。