javascript - angular.js 可以与 JSTL 表达式语言通信吗?

标签 javascript angularjs jstl angularjs-ng-repeat angularjs-ng-init

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/

相关文章:

javascript - if 语句 == 多个选项中的至少一个

Javascript - 解析动态添加的表单

javascript - Angular js ng 显示不工作

jsp - 在 JSP/JSTL 中查看 bean 的所有字段/属性

jsp - 如何使用 JSTL 转义 HTML 标签

javascript - jQuery//为什么这个 if 语句不正确?

javascript - JSDoc:如何提示 this.constructor.staticSomething?

php - 无法使用 PHP、Mysql 和 Angular.js 检查数据库中的重复数据

javascript - Ajax 调用以 Base64 字符串形式返回 PDF 文件

jsf - c :forEach runs always the same amount of loops