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

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

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

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

Q&A

1回答

629閲覧

AngularJSの$resourceで取得した値を変数に格納する方法

tato.aoki

総合スコア33

AngularJS

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

0グッド

0クリップ

投稿2017/09/13 07:49

お世話になります。
AngularJS1.5.8にて開発を行っておりますが、どうしてもわからないことがありましたのでみなさまの知識をお借りできればと思い質問させていただきます。

【実現したいこと】
都道府県のマスターデータをJSON形式で作成して、このデータを読み込むServiceを作ってControllerから値を参照したい

【試してみた方法】
① 都道府県のマスターデータを以下のようにJSONで作成しました。

json

1/** pref.json **/ 2{ 3 "1": "北海道", 4 "2": "青森県", 5 "3": "岩手県", 6 "4": "宮城県", 7 "5": "秋田県", 8}

② マスターデータを読み込むサービスを作成しました

javascript

1module.service('MasterDataService', function ($resource) { 2 this.pref = $resource('asset/masterdata/pref.json').get().$promise.then(function(data){ 3 return data; 4 }) 5}); 6 7 //Controllerから MasterDataService.pref で都道府県データを取得したい 8

③ ControllerからServiceを読み込んで都道府県データが使えるか確認しました

javascript

1module.controller('AppController', function (MasterDataService, $scope) { 2 this.masterdata = []; 3 this.masterdata["pref"] = MasterDataService.pref; 4 5 console.log(this.masterdata); 6 //結果>>Promise {$$state: {…}} 7}); 8

【試した結果】
上記のコードで試してみたのですが、うまく都道府県データを取得して変数に入れることができませんでした。
なにか、実現できる方法はございませんでしょうか?

みなさまのお知恵をお貸しいただければ幸いでございます。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

動作リンク

<html> <head> <meta charset="utf-8"> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-resource/1.5.8/angular-resource.js"></script> <script> var module = angular.module('appName', ['ngResource']); module.service('MasterDataService', function ($resource, $timeout, $q) { // old this.pref = $resource('./pref.json').get().$promise.then(function(data){ return data; }); // new this.pref2 = function(){ return $resource('./pref.json').get().$promise; }; }); module.controller('AppController', function(MasterDataService, $scope) { //old this.masterdata = []; this.masterdata["pref"] = MasterDataService.pref; console.log(this.masterdata); // new var self = this; self.masterdata2 = []; MasterDataService.pref2().then(function(ret){ self.masterdata2["pref"] = ret; console.log(self.masterdata2); }); // 画面から呼び出し $scope.pref2 = function(){ return self.masterdata2["pref"]; } }); </script> </head> <body> <div ng-app="appName" ng-controller="AppController"> <ul> <li ng-repeat="d in pref2()">{{d}}</li> </ul> </div> </body> </html>

投稿2017/09/14 01:52

編集2017/09/14 01:54
pinpikokun

総合スコア376

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問