【问题标题】:How can I get HTML element value inside Angular JS conroller while the page is getting loaded加载页面时如何在Angularjs控制器中获取HTML元素值
【发布时间】:2014-12-18 10:14:41
【问题描述】:

让我说出我被卡住的场景,我会尽量简单地解释而不是告诉实际情况。

1st:我在第 1 页。那里很少有具有唯一名称的主题。 第二:我将单击一个主题,它将在后端调用一个 struts2 动作(我们称之为 ActionA),并将唯一的主题名称作为请求参数(请求类型 = GET)。 3rd:Action A 只会重定向到“Tutorial page”。 4th : 在加载时,它将对另一个 Struts2 动作(我们称之为 ActionB)进行 AJAX 调用,这将返回包含该主题的教程的 JSON。

问题: 因为我首先调用 ActionA 并传递只是将页面重定向到其他页面的主题名称。在页面加载时,我正在调用另一个操作来获取 JSON。我无法在返回 JSON 的 ActionB 处获取请求参数值。

注意:我使用的是 Struts2-JSON 插件,所以不需要两个操作,一个用于重定向页面,另一个用于在页面加载时获取 JSON。

尝试的解决方案:我尝试获取请求参数值即主题名称,在教程页面中放置了一个隐藏字段。但无法从 Angular JS 控制器内部获取值。

【问题讨论】:

  • 你在用路由器吗? ngRoute/uiRouter?
  • 不,我是 Angular JS 的新手,这个 ngRoute 可以在这种情况下帮助我吗??
  • 我不熟悉 struts,因此我无法正确理解场景。你在后端渲染你的html吗?通常你使用 ngRoute/uiRouter 切换页面,这些模块有一个“resolve”方法,你可以在渲染之前加载页面需要的任何数据。
  • 哦,我误读了您的问题,如果问题是您没有 ActionB 的请求参数,因为您已经加载了一个新页面,请尝试使用存储您需要的所有变量的服务多个地方并在您的控制器中注入此服务。如果这是您需要的,请告诉我,我将添加示例代码。
  • 是的,这听起来不错,我可以在页面上找到一些可用的东西,然后我的问题就可以解决了,如果你能举个例子就好了。

标签: ajax json angularjs struts2


【解决方案1】:

这是共享服务的示例:http://plnkr.co/edit/P2ItVj20RYCJVjdIaXfY

但是,如果您重新加载页面,这不起作用,您是对的。如果您想为此使用角度或任何其他单页框架,我认为您的场景需要调整。单页应用程序的一个目的是尽量减少重新加载,最好不要。如果您的操作 A 只返回一个模板,然后您想在其中输入操作 B 的结果,我建议查看 ngRouteuiRouter,您可以在其中定义模板(操作 A 的结果)和该视图的控制器。此模板会用新模板替换您页面的一部分(ng-view)。如果两者对您来说都是新手,我建议您查看uiRouter,它很相似,但它为您提供了更多可能性。两者都提供了“解决”功能,您可以在该功能中在页面呈现之前加载您的操作 B。

来自 plunker 的代码

angular.module("app", [])
.controller("MainController", ['SharedService', function(SharedService) {
  var vm = this;
  //bind to service
  vm.service = SharedService;


}]);

服务

angular.module("app")
.factory("SharedService", [function() {
  var service = {
    id: "test"
  }

  return service;
}]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多