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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

JavaScript

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

Slim

SlimはPHPアプリケーションを開発するための軽量なマイクロフレームワークです。

AngularJS

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

Q&A

解決済

1回答

6293閲覧

【angular】ng-initを使った、bindingされた値のviewからcontrollerへの渡し方について

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

JavaScript

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

Slim

SlimはPHPアプリケーションを開発するための軽量なマイクロフレームワークです。

AngularJS

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

0グッド

0クリップ

投稿2015/06/25 11:04

タイトルの通りです。ng-initを使った、bindingされた値のviewからcontrollerへの渡し方について苦戦しているので質問させていただきました。

1つのshopの中にn個のitem_listがあり、そのなかに紐付く形で複数のitemが格納されているという前提です。

shop(1) -> item_list(n) -> item(n)

このような状況のとき、new_itemの追加フォームからitem_listに紐付いた新しいitemを追加しようとしているのですが、追加しようとしているitem_listのidの、controllerへの渡し方に悩んでいます...

そのまま実行しようとすると、ng-init時にまだ{{item_list.id}}に値が格納されていないため(合ってるか不安ですが)、undefinedとして渡されてしまいます。

bindingされた値をcontrollerに渡すにはng-initでは不可能なのでしょうか。また、その他にbestな方法がありましたらこの機会に教えていただきたいと思っています。どうかよろしくお願いいたします。

lang

1ul 2 li ng-repeat="item_list in shop.item_lists" 3 span item_list.id -> {{item_list.id}} 4 ul 5 li ng-repeat="item in item_list.items" 6 span item.id -> {{item.id}} 7 input type="submit" value="削除" ng-click="deleteItem(item)" 8 9 form id="new_item" ng-submit="addItem(itemBody, itemListId)" 10 input type="text" id="itemBody" ng-model="itemBody" ng-init="itemListId={{item_list.id}}" 11 input type="submit" value="追加({{item_list.id}})"

lang

1angular.module('angularApp').controller "ShopController", ($scope) -> 2 $scope.addItem = (itemBody, itemListId) -> 3 alert(itemBody) 4 alert(itemListId)

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

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

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

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

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

guest

回答1

0

ベストアンサー

下記のようにテンプレートが実行される前にng-initは実行とありますので、今のコードはng-repeatが実行ありきなので、うまく動かないんだと思います。
http://js.studio-kingdom.com/angularjs/ng_directive/ng_init

addItem(itemBody, itemListId)を
addItem(itemBody, item_list.id)に変えれば、item_listのidを渡せます。

投稿2015/06/25 12:58

chiku_

総合スコア1464

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

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

退会済みユーザー

退会済みユーザー

2015/06/27 04:13

なるほど。。なんとか渡すことができました。勉強になりました。ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問