memorandumsスマートフォン用の表示で見るmemorandums日々の作業ログです。frameworkIonicframework勉強中です。AngularJSもチュートリアルを理解した程度です。あまりに初歩的で役立つ人は少ないかもしれません。メモとして残しておきたいと思います。ここ数日悩んでたコードが以下です。コードはこちらにあります。}});悩んでたのは、以下のモーダル画面で新規登録したいPlayerの名前を入力してADD2ボタンを押すとメインのリストに追加される。はずなのですが、それがされない。ng-model="newPlayer.player_name"で定義したnewPlayerがcreatePlayer関数の引数にセットされてJSのコントローラで利用できるはず。想定していたのですが、JS側のuはundefinedだって怒られます。ちなみにADD1ボタンを押すと動作します。ADD1ボタンはng-modelと同一のion-contentディレクティブの中にあります。ADD2ボタンはion-header-barディレクティブの中にあるためng-modelとは別です。スコープかバインディングの動作を勉強していないのではっきりは言えませんが、同じPlayersControllerコントローラ内であってもディレクティブ間はng-modelのデータは共有できないように設計されていると見えます。モジュール設計の思想的には当然といえば当然で。見つけた一つの解法が以下でした。いうかたぶん何の変哲もない普通の使い方なのだと思いますが。いかんせん勉強中なのでオーダー感がわかりません。こちらで実行できます。htmlはcreatePlayer()の引数を削除しています。app.jsでは追加または変更箇所にコメントを入れています。参考にしたのはこちらの記事です。}});言葉の理解が曖昧なので、かなり怪しいですが、とりあえず説明してみます。ディレクティブ間でデータを共有するためにfactoryを宣言します。factoryが何者か。引数で与えた文字列をオブジェクト名として第二引数の実行結果を受け取れるようです。この場合はnewPlayerというオブジェクトを参照するとその中にplayer_nameというプロパティが定義されていてその値を出し入れできる、そんなイメージです。ここではng-modelにfactoryのnewPlayerを指定することでモーダルウィンドウで入力された値を一時的に保存し、ボタンを押下したときに呼び出されるcreatePlayer内でfactoryで定義したnewPlayerオブジェクトを参照できるようにした。まどろっこしい説明です。この解法ってなんか間違っているような気もします。モーダルウィンドウで入力した値をコントローラ内の関数で参照したいがためにfactoryをいちいち定義していたら。factoryだらけになってしまうような気がしてなりません。AngularJSをある程度しっかり勉強しないとな。広告を非表示にする関連記事2009-09-02codezineの記事をトレースしてみたいつかやってみたいな。»プロフィールid:ke_takahashiソフトウェア開発、工作、面白ガジェットに興味があります。(1)はてなブログをはじめよう!ke_takahashiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。