【问题标题】:Passing URL from HTML / JSP / ERB / etc to Angular JS将 URL 从 HTML / JSP / ERB / etc 传递给 Angular JS
【发布时间】:2013-01-20 23:30:34
【问题描述】:

尝试将 AngularJS 连接到 Spring MVC 应用程序(这部分在很大程度上无关紧要)并想知道将 URL 传递给 JS 控制器的 Angular 方式是什么。

我看到很多示例(几乎所有示例)都将 URL/路径硬编码到 JS 文件中,作为一名长期的 MVC 开发人员,这让我很困扰

function MyController($scope, $http) {
    $scope.doSomething = function() {
        $http.get('/someUrl').success(successCallback);
    }
}

我知道我可以在我的 JSP 中设置一个 JS 变量,但这感觉不是正确的方法。

那么 Angular 方法 将 URL 从诸如 <spring:url> 或 Rails 的 url_for(:action => 'some_action') 传递到 Angular 控制器的方式是什么?

【问题讨论】:

    标签: ajax url angularjs


    【解决方案1】:

    我为此使用可以作为依赖项注入的常量,例如:

    angular.module('myModule', [])
          .constant('urls', {
              'saveUrl': '<c:url value="/save"/>',
              'cancelUrl': '<c:url value="/cancel"/>'
          })
          .controller('someController', function($scope, urls) {
                $scope.saveUrl = urls.saveUrl;
            });
    

    但是,如果我也想填充一些模型,它会变得有点困难。不知道如何处理这种情况,尽管现在我已经为每个服务创建了一个配置部分,它将通过在 spring 模型上循环来添加内容。但这可能会更好地通过让 Angular 执行提交到页面并通过 json 调用获取所有数据来完成。然而,这意味着调用页面应该已经能够做到这一点。

    【讨论】:

      【解决方案2】:

      好的,尽管我仍然很想听听其他人的意见,但我还是采用了这种方法

      <form name="myForm" ng-submit="submit('<spring:url value="/someUrl" />', myModel)" novalidate>
      

      ... 这个在控制器中

      $scope.submit = function(url, model) { // ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-31
        • 2015-10-17
        • 1970-01-01
        • 1970-01-01
        • 2010-12-16
        • 2015-01-18
        相关资源
        最近更新 更多