我使用angularjs在不同页面上的控制器之间传递值。 这是我app.js的一部分。
app.controller('JewelleryCtrl', function($scope, srvShareData) {
$scope.sharedData = srvShareData.getData();
sessionStorage.clear();
});
我可以在下一页获得传递的值
{{sharedData}}
在我的情况下,此{{sharedData}}包含值" Rings"。 我想在jstl中比较这个值,但它不起作用。这就是我正在尝试的,
<div ng-controller="JewelleryCtrl" class="ui-tabs-panel ui-tabs-hide ui-widget-content ui-corner-bottom" id="fragment-2">
<%
String subcat1 = "{{sharedData}}";
request.setAttribute("subcat", subcat1);
%>
<!--<h4>Address</h4>-->
<div class="sell" onsubmit="return false">
<c:set var="subcategory" value="${subcat}" scope="session"/>
<c:out value="${subcategory}"></c:out>
<c:choose>
<c:when test="${subcategory == 'Rings'}">
<div class="col-3">
<label>
<select id="basemodel" name="sizeofring" tabindex="5">
<option value="" selected="">Select Ring Size</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</label></c:when>
</c:choose>
</div>
这种比较总是失败。我是否已将{{sharedData}}转换为字符串并进行比较?我不知道该怎么做。
答案 0 :(得分:0)
关键是要实现每个代码执行时 和 - 当请求和呈现页面时服务器上的JSP(即之前响应发送到浏览器)和浏览器中的Javascript(即Angular), 后,浏览器收到已生成的响应。
所以目前,当Angular接管时,不再有request
的属性,不再有session
(只是一个会话ID cookie)等等。因此,如果你想通过从JSP到Angular的任何值,都需要渲染它。有不同的方法,最好的方法取决于您的需求。你可以这样做。
<div id="subcat" data-subcat="<%= subcat1 %>" style="display: none"></div>
然后读取data-subcat
属性的值,或将其设置为全局JS变量
<script>
var subcatGlobal = '<%= subcat1 %>';
</script>
然后直接使用它。还有其他几个选项 - 如果你谷歌用于pass jsp variable angular
,你会得到很多有用的结果(其中很多都指向SO)。