お世話になります。
AngularJS 1.4.4
jQueryMobile 1.4.5
個人的には正直何が起こるのか把握できないので、AngularJSとjQueryMobileを共存させたくないのですが、お客様が慣れているという希望で併用したいという事が判明して慌ている状態です。
案の定というかフォームが選択されなくて(正確には値は取れてるが反映されなくて)困っております。
大まかにはjQueryMobileで画面が作られています。
AngularJSで$httpのGETでPHPプログラムを呼び出してDBからデータを取得する、流れ自体はありきたりな感じです。
上記GETの戻り(success)でデータは取得されているのは確認できているのですが、テキスト関係以外(SELECTやradioボタン等)が反応せずに困っている状態です。
書いてある部分の抜粋
html
1<fieldset data-role="controlgroup" data-type="horizontal"> 2 <input id="male" name="sex" type="radio" ng-model="data.sex" value="1" /> 3 <label for="male">男性</label> 4 <input id="famale" name="sex" type="radio" ng-model="data.sex" value="2" /> 5 <label for="famale">女性</label> 6</fieldset> 7 8<select ng-model="data.age" name="age"> 9 <option value="0">年齢を選択</option> 10 <option value="1">10代</option> 11 <option value="2">20代</option> 12 <option value="3">30代</option> 13 <option value="4">40代</option> 14 <option value="5">50代</option> 15</select>
こんな感じで$scope.data.sexには2が、$scope.data.ageには4が入っています。
jQueryMobileを非読み込みにすると想定通りSELECTもradioも選択されるのでjQueryMobileが何かしてるらしいのは把握できています。
でjQueryMobileでよく言われるAJAXでの非同期関係で何か行けないのかと思ったのですが、そこからどうして良いのか分かりません。
とりあえず試した事は$scope.$apply()でVIEWへ反映させれば良いのかと思ったので、ネットで調べてみてGETでデータを取得した時点で
javascript
1$scope.data = data;//dataが取得したデータ 2if ($scope.$root.$$phase != '$apply' && $scope.$root.$$phase != '$digest') { 3 $scope.$apply(); 4}
と言うコードを書いてみたのですが、$digestに引っかかって$scope.$apply()が実行されません。
何かヒントでもあればと思いまして、質問させて頂きます。
宜しくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。