angular.js は JSTL 式言語と通信できますか? 配列を使用して ng-options を作成したい。このようなもの :
<select ng-model="detail" ng-init="Categories = '${Categories}'" ng-options="'${Category.code}' for Category in Categories">
angular.js は JSTL 式言語と通信できますか? 配列を使用して ng-options を作成したい。このようなもの :
<select ng-model="detail" ng-init="Categories = '${Categories}'" ng-options="'${Category.code}' for Category in Categories">
angular-JSTL 通信のようなものはあり得ませんが、探しているものを達成することはできます。JSP はサーバー側で評価され、クライアント側に送信される最終的な静的 HTML が生成され、そこで Angular アプリケーションがその魔法を実行します。そのため、JSTL はサーバー側で評価され、Angular アプリケーションがそれと「通信」することはできません。
あなたの場合、これらの変数が次のように割り当てられていると仮定しましょう。
Categories = '[{"code": "foo", ...}, {"code": "bar", ...}]'
これで、JSP に次の行が含まれます。
<select ng-model="detail" ng-init="Categories = '${Categories}'" ng-options="'${Category.code}' for Category in Categories">
JSP が評価されると、Angular は次のことを見つけます。
<select ng-model="detail" ng-init="Categories = '[{"code": "foo", ...}, {"code": "bar", ...}]'" ng-options="'' for Category in Categories">
これはあなたがやりたいことに近いかもしれませんが、これにアプローチする方法は次のとおりだと思います。
JSP:
window.categories = ${Categories};
これは、カテゴリ変数が JSON であると想定しています。そうでない場合は、Jackson を使用して JSON に変換するか、JSTL を介して手動で変換する必要があります (これはお勧めしません)。これで、カテゴリが何であれ含まれる JavaScript 変数ができたので、通常の Angular ロジックを使用してそれを繰り返すことができます。
次のような FooController があるとします。
angular.module("controllers")
.controller("FooController", [
"$scope",
"$window",
function($scope, $window) {
$scope.categories = $window.categories;
}
]);
これでスコープにカテゴリができたので、次のようにビューで使用できます。
<select ng-model="detail" ng-options="'category.code for category in categories">