【发布时间】:2016-10-26 20:17:49
【问题描述】:
我在 .jsp 网页中有一个 AngularJS 嵌套下拉菜单:
<div ng-controller="AlgoController">
<select ng-model="myModel" ng-options="model.name group by model.shade for model in models"></select>
我可以很方便的显示选中菜单项的值如下:
{{myModel.swValue1}}
问题是我需要告诉我的 JSP 代码该值是什么,以便它可以决定要运行哪些 Java 代码。
我一直在研究和试验,如果这是一个普通的 JS 变量,我可以像这样将它传递给 JSP:
<script>
var v = "I am the selected menu item";
</script>
<br><br><br>
<%
String st="<script>document.writeln(v)</script>";
out.println("value="+st);
%>
有人说我可以简单地做这样的事情:
<script>
var v = $scope.myModel;
</script>
或
<script>
var v = myModel.name;
</script>
等等,但这似乎让v 未定义。
我的最佳尝试是:
<script>
var scope = angular.element($("body")).scope();
var v = scope.myModel;
</script>
<br><br><br>
<%
String st="<script>document.writeln(v)</script>";
out.println("value="+st);
%>
我的最终尝试(上图)基于this 切线相关的 Plunkr。但是 angular 在我的尝试中是未定义的,我无法弄清楚 angular 在示例中是如何工作的,或者我可以用什么对象名称代替它(我尝试了所有方法)。
我已经加载了 jQuery 库,但我不在乎是否使用它。
更新:
我尝试将id="mymenu" 放在select 元素中,然后这样做:
<script>
var v = window.document.getElementById("mymenu").selectedIndex;
document.writeln(v);
</script>
这看起来很有希望,只是它总是返回-1。 更新:在沿着这条路走了一个小时后,我不再认为常规的 JavaScript window 可以从 Angular 接收值,尽管相反的情况是可能的——通常与 document.getElementById 相同。 p>
【问题讨论】:
标签: javascript java angularjs jsp