2017-07-14 24 views
3

hateoas私たちはリンクをバックエンドにコールしています。メソッドのポストを持つフォームの動作中のアクション/リンクを呼び出す

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

だから我々はこのような単純に私達のリンク呼び出すことができます:(それは負荷からのhrefを呼び出す)myObject.$load()を私たちのHateoasWrapperは、この(ブラウザのコンソールからコピーされた)のように見えます。これは正常に動作します。

form要素のactionにある$load()を呼び出しようとしました。このために私はactionに電話を入れて、このようなsubmitでそれを発射:

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

このdoesntの仕事。これは、新しいタブを開きますが、このエラーで:

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

それはhateoasを呼び出すことは可能です:私は行動にハードコードのhrefを置くCannot post/ctrl.myObject.$load()

は、それが(正しいデータで新しいタブを)動作します私の解決策のようなformaction

+0

これは仕事ができる – Vivz

+0

アクション=「ctrl.myObject.Links [0] .HREF」にあなたのアクションメソッドを変更してみてください、しかし、そこに複数のリンクがあると私は呼んたいですリストの順序も動的であるため(これがクリアである場合)、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

関連する問題