我们正在使用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
?
答案 0 :(得分:0)
这里缺少插值。由于action
不是标准的AngularJS指令/属性,因此AngularJS引擎无法理解传递的表达式。
尝试将表达式ctrl.myObject.$load()
包装在像{{ctrl.myObject.$load()}}
这样的花括号中,然后AngularJS会自动将其替换为函数的返回值。
在以下代码段中观察它的实际效果。打开检查面板,观察表格action
属性中的内容。
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;