用方法帖子调用形式行动中的hateoas动作/链接

时间:2017-07-14 14:53:50

标签: html angularjs forms action hateoas

我们正在使用hateoas来呼叫后端我们的链接。我们的HateoasWrapper看起来像这样(从浏览器控制台复制出来):

{
    $actions: [
        {
            $call: function ()
            action: "load"
            href: "http://myApi"
            method: "POST"
            rel: "parent"
        }
    ],
    $load: function (),
    Links: [
        {
            ActionValue: "load"
            Href: "http://myApi"
            Methid: "POST"
            Reld: "parent"
        }
    ]
}

所以我们可以简单地调用我们的链接:myObject.$load()(它从load调用href)。这很好。

现在,我尝试调用$load()元素的action中的form。为此,我将调用放在action中并使用submit这样调用它:

<form action="ctrl.myObject.$load()" method="post" target="_blank">
    <input type="submit">
</form>

这不起作用。它会打开一个新标签,但出现此错误:Cannot post/ctrl.myObject.$load()

当我将href硬编码到动作中时,它可以工作(带有正确数据的新选项卡):

<form action="http://myApi" method="post" target="_blank">
    <input type="submit">
</form>

是否可以像我的解决方案一样在hateoas中拨打action form

1 个答案:

答案 0 :(得分:0)

这里缺少插值。由于action不是标准的AngularJS指令/属性,因此AngularJS引擎无法理解传递的表达式。

尝试将表达式ctrl.myObject.$load()包装在像{{ctrl.myObject.$load()}}这样的花括号中,然后AngularJS会自动将其替换为函数的返回值。

在以下代码段中观察它的实际效果。打开检查面板,观察表格action属性中的内容。

&#13;
&#13;
angular.module("myapp", [])
  .controller("myCtrl", function($scope) {
    $scope.myaction = function() {
      return "abc";
    };
  });
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="myapp" ng-controller="myCtrl">
<form action="{{myaction()}}">
  Inspect this form's action in console
</form>
</div>
&#13;
&#13;
&#13;