可以角度.js与JSTL表达式语言进行通信
Can angular.js communicate with JSTL expression language?
angular.js可以与JSTL表达式语言通信吗?我想使用数组创建 ng 选项。像这样:
<select ng-model="detail" ng-init="Categories = '${Categories}'" ng-options="'${Category.code}' for Category in Categories">
不可能有角度-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">
我相信
答案是肯定的(我很想测试一下,但我现在有点束手无策(。 JSTL在服务器端处理以呈现HTML(以及其他内容(。AngularJS是在客户端处理的东西。
因此,我的理解是,在上面给出的示例中,"类别"属性将设置为${Categories} JSTL EL评估的字符串输出。
相关文章:
- 如何通过JavaScript正则表达式匹配不同语言中的单词
- 我的正则表达式如何支持多种语言,如中文,日语,法语等
- jstl-如何将表达式语言变量传递给javascript警报
- 在 JavaScript 中包含 JSF 表达式语言
- 正则表达式不允许所有特殊字符,但允许其他语言,如希伯来语 JavaScript
- 高图表和表达式语言问题 - 标记“{”上出现语法错误
- 访问 jsp 页面的 javascript 中的表达式语言
- 可以角度.js与JSTL表达式语言进行通信
- 为什么我们要在 JavaScript 等语言中将 / 和 / 放在正则表达式的开头和结尾
- 表达式语言 - 如何访问整个数组
- JavaScript 语言解析:区分函数表达式和声明
- 需要忽略值中是否有任何单引号字符来自表达式语言,而不会破坏 JavaScript 代码
- JQuery/Javascript - 需要正则表达式来匹配多语言文本
- 将JSF表达式语言作为参数传递给javascript函数
- 如何在不同的编程语言中使用相同的正则表达式
- 在javascript下使用表达式语言
- 在哪里可以找到多语言正则表达式的单元测试?
- 试着恢复状态.表达式语言操作符
- 表达式语言中的新行
- 跨语言简单表达式语言实现