gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 18:11:07 25 4
gpt4 key购买 nike

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 或手动通过 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com