我的表有这个代码:
##
<tr ng-repeat="elt in tabDemandes">
<td>{{elt.id}}</td>
<td>{{elt.name}}</td>
<portlet:renderURL var="maj">
<portlet:param name="action" value="maj"/>
<portlet:param name="idD" value="elt.id"/>
</portlet:renderURL>
</tr>
##
我想在我的控制器中恢复我的参数“idD”的值,但是它将elt.id作为参数的值并且他给了我错误
有人可以帮助我吗?
答案 0 :(得分:0)
要访问控制器中的idD,只需设置一个可以容纳它的$ scope。 Angularjs在构建时考虑了双向数据绑定,因此实际上,您可以在视图中对控制器进行更改,并将控制器中的更改推送到视图中。
在您的情况下,只需确保将idD存储为ng-modle,该ng-modle链接回您在控制器中声明的范围。正确链接后,您可以在控制器中获取idD没问题。
答案 1 :(得分:0)
显然,区别在于JSTL taglib(<portlet:renderUR>L
)在服务器上运行,而AngularJS和ng-repeat
在客户端上运行。目前AngularJS正在循环您的内容,URL已经被渲染。
有关服务器端和客户端差异的详细信息,请查看以下答案:What is the difference between client-side and server-side programming?
我们所做的很简单,我们将网址附加到我们的模型中(在您的情况下为tabDemandes
)。这是我们用于创建以ID作为参数的操作URL的示例:
PortletURL detailURL = response.createActionURL();
detailURL.setParameter(ActionRequest.ACTION_NAME, "detailTask");
detailURL.setParameter("id", Long.toString(task.getId());
task.setDetailURL(detailURL.toString());
在这种情况下,我们使用了一个任务列表,我们使用此操作URL打开任务的详细页面,因此我们必须将ID传递给操作URL。我们使用Java API代替使用JSTL标记库。
在您的情况下,您可能需要使用response.createRenderURL()
。