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 手动将其转换为 JSON(我建议您不要这样做)。现在,您有一个 javascript 变量,其中包含您的类别,因此您可以使用常规 Angular 逻辑来迭代它。
假设您有一个如下所示的 FooController:
angular.module("controllers")
.controller("FooController", [
"$scope",
"$window",
function($scope, $window) {
$scope.categories = $window.categories;
}
]);
现在您的类别已在范围内,因此您可以在 View 中使用它们,如下所示:
<select ng-model="detail" ng-options="'category.code for category in categories">
关于javascript - angular.js 可以与 JSTL 表达式语言通信吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27304074/