質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CoffeeScript

CoffeeScriptはプログラミング言語です。シンタックスシュガーの導入により、JavaScriptのコードに変換された後動作します。JavaScriptに比べ、可読性と簡潔性が向上しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

AngularJS

AngularJSはオープンソースのJavaScriptフレームワークです。ブラウザ上で動作するウェブアプリケーションの開発にMVCアーキテクチャを取り入れることを目的としています。

Q&A

0回答

1514閲覧

[AngularJS] $httpサービスを使わずに、$resourceサービスだけでCRUD操作をしたい

aoshima.natsuki

総合スコア33

CoffeeScript

CoffeeScriptはプログラミング言語です。シンタックスシュガーの導入により、JavaScriptのコードに変換された後動作します。JavaScriptに比べ、可読性と簡潔性が向上しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

AngularJS

AngularJSはオープンソースのJavaScriptフレームワークです。ブラウザ上で動作するウェブアプリケーションの開発にMVCアーキテクチャを取り入れることを目的としています。

0グッド

1クリップ

投稿2015/10/23 06:46

編集2015/10/26 10:40

Rails側はAPIの提供(/api/articles/:id にて、articleの情報とそれに紐づくitemをjson形式でレンダリングしています)に専念させ、Angular側でjsonを受け取りserviceクラスのfactoryメソッドからデータのやりとりをしようとしています。こちらが現状のコードです。Angularのバージョンは1.4.7を採用しています。

《service》

javascript

1App.factory 'Article', ($resource, $http) -> 2 class Article 3 constructor: (errorHandler) -> 4 @service = $resource('/api/articles/:id', 5 { id: '@id' }, 6 { update: { method: 'PUT' }}) 7 @errorHandler = errorHandler 8 9 find: (id, successHandler) -> 10 @service.get(id: id, ((article)-> 11 successHandler?(article) 12 article), 13 @errorHandler) 14 15 create: (attrs) -> 16 new @service(article: attrs).$save() 17 18 update: (article, attrs) -> 19 new @service(article: attrs).$update {id: article.id}, (-> null), @errorHandler

こちらをcontrollerから呼び出し、createやupdateを呼んでいます。

《controller》

javascript

1-- assets/javascripts/controllers/article_edit.coffee 2@articleService = new Article(serverErrorHandler) 3@articleService.update($scope.article, title: article.title, description: article.description)

こちらをできればもう少しスマートに記述したいです。参考書やウェブの情報によると今回のようなアプリケーションでは、$httpサービスは基本的に用いずに$resourceサービスだけで実装するのが一般的と推奨されており、リファクタリングをしようとしているのですが、Angular内部のエラーに詰まり、うまく移行できません...

Error: [$resource:badcfg] http://errors.angularjs.org/1.4.0/$resource/badcfg?p0=query&p1=array&p2=object&p3=GET&p4=%2Fapi%2Farticles%2F13495

できれば、下記のように(「Rails+JSフレームワークでリアルタイム掲示板を作成してみる(AngularJS編)」を参考にしました)serviceクラスではAPIの受け取りだけに専念させシンプルに記述したいです。この方法がやはり推奨なのか、また、コードに良くない点やエラーの原因が見受けられましたら、どうかアドバイスをいただきたいです。読みにくいコードで申し訳ありませんがどうかよろしくお願いいたします。

《service》

javascript

1App.factory 'Article', ($resource) -> 2 $resource '/api/articles/1'

《controller》

javascript

1Article.query (article) -> 2 $scope.article = articles 3 4$scope.create = -> 5 article = Article.save($scope.Article)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問