0

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

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

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

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

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

4

2 回答 2

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 调用获取所有数据来完成。然而,这意味着调用页面应该已经能够做到这一点。

于 2014-01-07T09:28:16.453 回答
0

好的,我采用了这种方法,尽管我仍然非常渴望听取其他人的意见

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

...这在控制器中

$scope.submit = function(url, model) { // ...
于 2013-01-21T04:00:35.783 回答