2017-07-14 49 views
3

致電hosoas行動/鏈接在形式的行動我們正在使用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()(它調用從負載HREF)。這工作正常。

現在我嘗試撥打form元素的action中的$load()。爲此,我將通話的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> 

是否可以調用hateoasactionform像我的解決方案?

+0

試着改變你的操作方法,以行動=「ctrl.myObject.Links [0] .Href」 – Vivz

+0

這可以工作,但也有超過一個鏈接,我想打電話給它與actionValue名稱$ [ActionValue],因爲列表的順序也是動態的(如果這是明確的)。 – MrBuggy

+0

如果有多個鏈接,您將如何知道哪個鏈接要使用哪個鏈接? – Vivz

回答

0

您在此處缺少插值。由於action不是標準的AngularJS指令/屬性,AngularJS引擎無法理解傳遞的表達式。

嘗試在{{ctrl.myObject.$load()}}等花括號中包裝表達式ctrl.myObject.$load(),然後AngularJS會自動用函數的返回值替換它。

在以下代碼片段中觀察它的作用。打開檢查面板,觀察表單的action屬性中的內容。

angular.module("myapp", []) 
 
    .controller("myCtrl", function($scope) { 
 
    $scope.myaction = function() { 
 
     return "abc"; 
 
    }; 
 
    });
<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>

+0

我仍然得到這個錯誤:不能POST/ – MrBuggy

+0

@MrBuggy - 你能告訴我'$ load'函數的定義嗎? – 31piy