【问题标题】:AngularJS first(landing page) with dynamic content具有动态内容的 AngularJS 第一个(登陆页面)
【发布时间】:2014-04-29 05:00:39
【问题描述】:

我是 AngularJS 的新手。我想检查在我的新项目中使用它的可行性,这是一个 Web 应用程序。我已经在项目中使用 Struts2 Spring 和 hibernate 创建了一些页面。以下是我理解的转换点:

  1. 将服务器端 API 转换为返回 JSON 数据的 REST 样式

    问题:我可以使用动态 HTML 来使用 AngularJS 加载吗?我猜是。不知道怎么做?

    目前我在服务器端使用速度模板来填充 HTML 模板中的数据并在 AJAX 中将其作为响应发送?如果我尝试使用 AngularJS 会发生什么变化?

  2. 我有一个登录页面,用于显示存储在数据库中的一些图像和与之相关的数据。如何使用 AngularJS 显示它?

    问题:当我点击网站 URL(mysite.com) 时,我是否应该加载仅包含一个 div 标签的 HTML 模板,然后触发 AJAX 请求以加载动态 HTML?

  3. 如果我使用 AndularJS,如果我选择将我的数据 API 实现为带有 JSON 的 REST,它会完全使 Struts2 的使用无效吗?我想不是,因为我仍然需要加载将在服务器上生成的动态 HTML 视图对吗?

  4. 如果我在客户端使用带有 AngularJS 的 REST 数据 API,如何在服务器端维护 HTTP 会话状态?

我知道我可以在网上某处搜索和阅读上述问题的答案。我只需要它们在一个地方,以便我可以进行讨论和由此产生的其他问题。

【问题讨论】:

    标签: spring angularjs hibernate struts2


    【解决方案1】:

    我可能会回答一些你的问题:

    1) 将服务器端 API 转换为返回 JSON 数据的 REST 样式

    是的

    问题:我可以使用动态 HTML 来使用 AngularJS 加载吗?我猜 是的。不知道怎么做? 目前我在服务器端使用速度模板来填充 HTML 模板中的数据并将其作为 AJAX 中的响应发送?会发生什么变化 如果我尝试使用 AngularJS?

    如果我理解正确,您想在服务器端生成模板。在这种情况下 - 您只是不需要 AngularJs - 您的视图已预先填充在服务器上,并且浏览器接收静态内容(从客户端的角度来看)。如果您想使用 AngularJs,那么您的模板将成为静态内容(从服务器端的角度来看),它们将通过 REST 服务由 Angular 填充。

    2) 我有一个登录页面,用于显示一些图像和数据 与之关联的存储在数据库中。我怎样才能显示它使用 AngularJS?

    问题:我应该加载包含以下内容的 HTML 模板吗? 当我点击网站 URL(mysite.com) 然后触发 AJAX 时只有一个 div 标签 请求加载动态 HTML?

    不完全是。对于基于 jQuery 的方法来说,一个 div 就足够了(您可以使用 $.ajax 之类的东西,然后以命令的方式附加数据)。如果是 Angular,您将需要返回模板。它可能看起来像这样:

    <ul ng-controller="MyCtrl">
      <li ng-repeat="item in data">
        <img ng-src="item.image.src">
        <span>{{item.data.someTextProperty}}</span>
      </li>
    </ul>
    

    还有一些 AngularJs 控制器会触发对 REST 服务的请求(可能是通过您的 AngularJs 服务)并用结果自动填充模板

    function MyCtrl($scope, $http) {
      $http.get('/rest/data').success(function(result) {
        $scope.data = result;
      });
    }
    

    3) 如果我使用 AndularJS,它是否会使 Struts2 的使用完全失效 我选择使用 JSON 将我的数据 API 实现为 REST?我想不像我 仍然需要加载将生成的动态 HTML 视图 服务器正确吗?

    我认为它只会使 Struts 中的 MVC 视图的使用无效,因为 AngularJS 只会替换它。它还会让你使用类似 RESTful 控制器的东西(不太熟悉 Struts,但我认为有这样的东西)

    4) 如果我使用 REST,如何在服务器端维护 HTTP 会话状态 客户端上带有 AngularJS 的数据 API?

    这不是简短的答案,但基本上有以下模式。 AngualrJs 提供了 http 拦截器,可以拦截请求和响应。如果拦截了带有代码 401(未经授权)的响应,您可以为您的用户提供登录表单以恢复会话,并且在此操作完成后,重试最后一个请求。另外,here你可能会发现这个问题的另一个方面。

    希望我的回答对你有所帮助。

    【讨论】:

    • 感谢安德烈。你回答了大部分问题。我将浏览您有关会话维护的链接。谢谢。
    • @AndreaLigios 做到了 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    相关资源
    最近更新 更多