[解決済み] angular.js の ng-model に json を読み込むにはどうしたらいいですか?
質問
おそらく非常に明白な質問だと思うのですが、どこにも答えが見つかりませんでした。
私はサーバーからクライアントにいくつかのJSONデータをロードしようとしています。今現在、私はAJAX呼び出しでそれをロードするためにJQueryを使用しています(以下のコード)。
<script type="text/javascript">
var global = new Array();
$.ajax({
url: "/json",
success: function(reports){
global = reports;
return global;
}
});
</script>
これはhtmlファイル内にあります。ここまではうまくいくのですが、問題はAngularJSを使いたいことです。Angularは変数を使うことができますが、全体を変数にロードしてfor eachループを使うことができません。これは、通常.jsファイルにある"$Scope"に関連しているように思われます。
問題は、他のページから .js ファイルにコードを読み込むことができないことです。Angular のすべての例では、このようなものしか表示されません。
function TodoCtrl($scope) {
$scope.todos = [
{text:'learn angular', done:true},
{text:'build an angular app', done:false}];
というわけで、これは以下のような場合に便利です。 A) 全部手書きで入力したい、かつ B) データが何であるか事前に知っている場合。
事前にわからない(データは動的)ので、タイプしたくない。
そこで、$Resourceを使ってAngularへのAJAX呼び出しを変更しようとしたところ、うまくいかないようです。もしかしたら解らないのかもしれませんが、JSONデータの比較的単純なGETリクエストです。
tl:dr Angularのモデルに外部データを読み込むためのAJAXコールがうまくいきません。
どのように解決するのですか?
Kris が言及しているように、あなたは
$resource
サービスを使うこともできますが、あなたはAngularを使い始めているようなので、私は先週そこにいました。
$http
サービスを直接試すことをお勧めします。この場合、その
get
メソッドを呼び出すことができます。
以下のようなJSONがあった場合
[{ "text":"learn angular", "done":true },
{ "text":"build an angular app", "done":false},
{ "text":"something", "done":false },
{ "text":"another todo", "done":true }]
このように読み込むことができます。
var App = angular.module('App', []);
App.controller('TodoCtrl', function($scope, $http) {
$http.get('todos.json')
.then(function(res){
$scope.todos = res.data;
});
});
は
get
メソッドは
約束
オブジェクトを返します。
を返します。
成功
コールバックで、第二引数は
エラー
コールバックです。
を追加したとき
$http
を関数のパラメータとして追加すると、Angularは魔法を使って
を実行し
$http
リソースをコントローラに注入します。
ここにいくつかの例を載せておきます。
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] JSONPとは何か、なぜ作られたのか?
-
[解決済み] AngularJSのコントローラからビューにHTMLを挿入する
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み] ECMAScriptとは?
-
[解決済み] 文字列とラベルのローカライズとグローバリゼーションのベストプラクティス【終了しました
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] チェックボックスが選択されているかどうかを確認するjQuery
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] モバイルWeb HTML5フレームワークの選び方【終了しました
-
[解決済み] TypeScriptのdeclare classとinterfaceの違いとは?
-
[解決済み] JSXとLoadshを使用して、ある要素をn回繰り返す方法
-
[解決済み] react-routerのハッシュフラグメントからクエリパラメータを取得する
-
[解決済み] ECMAScriptとは?
-
[解決済み] $.ajax実行中にローディングイメージを表示する
-
[解決済み] JavaScript で `throw` の後に `return` をする必要がありますか?
-
[解決済み] Fetch: ステータスがOKでない場合、プロミスを拒否し、エラーをキャッチするか?