問題タブ [restangular]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angularjs - Relangular Promise からデータを返す
私は工場を次のようにしています:
私はすでにdefferedを使用していますが、実行する必要があるオブジェクトをまだ返していません。これを回避するにはどうすればよいですか?
angularjs - promise.then(func) が別のコントローラーで以前に実行されたことを確認する方法は?
コントローラー A に、コントローラー B で使用されている変数を設定する必要が$rootScope
ある Restangular 関数があります。コントローラー B が初期化される前に Restangular 関数が確実に実行されるようにするにはどうすればよいですか、またはこの問題を処理する別の方法はありますか? ありがとう。
ruby-on-rails - リクエストにIDを追加しないRestangular PUT
Rails 4 API の上に永続性を持たせるために Restangular を使用する AngularJS アプリがあります。更新が機能しないという問題が発生しました。
の私のコードrouteProvider
:
私のコントローラー機能:
PUT のリクエストは、http://mysite.com/coursesではなく、http://mysite.com/courses/id
思っていた通りだったのですが、その理由がわかりません。
レールがスローするエラーは'No route matches [PUT] "/courses"
.
どんな助けでも大歓迎です。
angularjs - AngularJS:REST を呼び出すときに DRY を維持し、読みやすいコードを生成するためのアイデアは、エンドポイントを js オブジェクトに格納しますか?
私はハッキングしており、現在、バックエンド サービスを呼び出すかなりの数のコントローラーを持っています。現在、エンドポイントをコントローラーに直接入力しており、URls は文字列リテラルとして格納されています。
コードを整理するための良いアイデアがある人はいますか?エンドポイントを js オブジェクトにキーと値のペアとして保存する必要がありますか?
私は現在、各コントローラーに注入しているrestangularを使用しています。これは正しい方法ですか?これをサービスに抽象化できますが、これから何を得ることができますか?
現在、私は 2 つの関数を受け入れる resangular 呼び出しを持っています。1 つは成功用、もう 1 つは失敗用です。
誰かがこの種のことを行うための例を持っているか、良い方法を見ましたか?
ありがとう
javascript - angularjsを使用して同じコントローラ内の別のリクエストに対して$httpリクエストによって返されたデータを使用する方法は?
http GET リクエストを作成し、そのレスポンスの一部を使用して別の http GET リクエストを作成する関数を作成しています。ただし、最初の http GET 要求によって返されるデータは、多くの不要なデータ (promise オブジェクトである可能性があります) でラップされていますが、その json コンポーネントが必要なだけです。コントローラーで応答の json データにアクセスするにはどうすればよいですか? これが私のコードです。
javascript - Restangular: ディレクティブ、コントローラーの継承、またはサービスのラッピングで CRUD DRY を維持しますか?
私は AngularJS に比較的慣れていないので、Restangular を使用して AngularJS の CRUD メソッドを DRY に保つためのさまざまな方法を試してきたので、コミュニティからのアドバイスをいただければ幸いです。
多くの API エンドポイントがあり、それぞれに項目のリストを表示し、各項目を選択して (その項目の詳細を表示するために)、削除したり、項目をリストに追加したりしたいと考えています。
私がこれまでに試したアプローチはどれも、非常に非 DRY であるか、$scope に適切にフックされていないか、ややハッキーでした...
ラッピング逆角
Restangular をサービスにラップし、addElementTransformer を使用して返されたコレクションに追加のメソッドを設定することは、適切なアプローチのように思えました。select
メソッドとメソッドはクリーンで、add
テンプレートから簡単に実装でき、promise が解決されるとリストを自動的に更新します。ただし、delete
メソッドは実際には要素スコープ (コレクションの子) 内から呼び出されるため、削除後にリストを更新するには、非常に疑わしい $scope をサービスに注入する必要があります。
(注: 単一の API エンドポイント/コントローラー/テンプレートのみを示すことで、例を読みやすくしました)
アプリ/js/services.js
app/js/controllers.js
アプリ/部分/会社.html
ベース コントローラの拡張
私が試した別のアプローチは、他のコントローラーが継承するベースコントローラーでテンプレートをサービスに接続することでした。ただし、ここではまだ $scope の問題があり、テンプレートからスコープを渡す必要がありますが、これは正しくないようです。
delete
(メソッドだけに編集)
アプリ/js/services.js
app/js/controllers.js
アプリ/部分/会社.html
ディレクティブ
私はディレクティブに少し慣れていませんが、多くの調査の結果、これがおそらく最もAngularJSにアプローチする方法であると思われるので、飛び込みました。基本的に問題は、リストからアイテムを削除できますが、すべての変数をディレクティブに渡さない限り、リストが最初に割り当てられた $scope のプロパティにアクセスできないため、アクセスできないことです。ビューで更新します。
app/js/directives.js
アプリ/部分/会社.html
基本的に、私はすべてを機能させることができますが、多くの繰り返しコードを実行するか (これは明らかに間違っています)、すべての呼び出しと共にスコープを送信するか (これも非常に間違っているようです)、またはサービスを初期化する必要があるようです。スコープを渡すことによって(私のコントローラーにとって最も適切なソリューションではありませんが、これを達成するための最も維持しやすく、最も脆弱な方法のようです.
もちろん、機能を削除するか、詳細ビューまたはチェックボックス/一括アクション機能に移動することもできますが、問題に夢中になり、最善の解決策を見つけることに興味がありました:)
明らかな何かが欠けている場合はお詫びします。
angularjs - ネストされたスパイを使用して Restangular へのサービス呼び出しをテストする
私がテストしているサービスには、この機能があります(たとえば):
そして、Restangular をスパイして、使用する適切なパラメーター、エンドポイントなどを取得するかどうかを確認したいだけです。
だから私は再角化モックを作りました:
しかし、モックのネストされた投稿にジャスミンスパイを設定することはできません:
spyOn(mockRestangular.one,'post')
私は得るpost() method does not exist
関数呼び出しも失敗します
someService.doSomething(params)
postメソッドを見つけることができるからです。
post メソッドを one メソッドにネストする必要があることに注意してください。1つだけをオブジェクトに変換すると、one
メソッドが欠落して失敗します。
明らかな何かが欠けていると思いますが、午前中ずっとこれに気を配っていて、完全に失敗しました
編集:
スパイに追加andCallThrough()
すると、すべてのピースが正しい方向に落ち着きました。誰かがいつか探しに来たら、答えを更新します。
javascript - Restangularを使用してエラー時に連鎖リクエストを停止するには?
Restangular を使用して、チェーンされた約束によってデータを取得しています。これが私がやっていることの簡単な例です:
最初にユーザーの雇用主を取得し、次にこの雇用主に添付されたレビューを取得する必要があります。サーバーから 401 応答が返されるまでは問題なく動作すると思います。
それが発生すると、ユーザーをログイン画面に送ります。これも問題なく動作しますが、問題はチェーン全体が実行されることです。これは、さらに 401 で返されます。
最終的には、エラーが発生したときにチェーンを停止したいと考えています。おそらくエラーをスローすることでそれを行うことができますが、それは本当に良い解決策ですか? 私はこれに間違った方法でアプローチしていますか?