ng-model="foodCatagory"
たとえば、コントローラーでプリセットすることができます。
$scope.foodCatagory = $scope.foodCatagories[0];
または、次のように ng-init を使用します。
ng-init="foodCatagory = foodCatagories[0]"
foodCatagories
非同期でロードすると、ディレクティブのコンパイル時にデータが利用できない可能性が高く、機能しないことに注意してくださいng-init
。
jQuery Mobile は追加の DOM 要素を使用して選択を表示および処理するため、データが読み込まれ、選択された値が設定されたときに、jQuery Mobile 自体を更新するように指示する必要があります。
たとえば、それを処理するディレクティブを作成できます。
app.directive('selectMenuRefresh', function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
var unbindWatcher = scope.$watch(attrs.ngModel, function(newValue, oldValue) {
if (newValue && oldValue === undefined) {
element.selectmenu('refresh');
unbindWatcher();
}
});
}
};
});
そしてそれを選択要素に置きます:
<select id="selectCatagoryFood" select-menu-refresh data-role="listview" data-native-menu="true" ng-options="foodCatagory as foodCatagory.Description for foodCatagory in foodCatagories" ng-model="foodCatagory" ng-change="changeFoodCatagory(foodCatagory)"></select>
このディレクティブは$watch
、変更を検出するためにa を使用しngModel
ます。newValue があり ($scope.foodCatagory = $scope.foodCatagories[0];
が実行されたときに存在する)、oldValue が存在する場合undefined
(最初の選択オプションが空のときに初めて発生する)、select 要素で refresh が呼び出されます。また、バインドを解除し$watch
ます。必要に応じて変更してください。
例: http://plnkr.co/edit/GLelHd?p=preview
注: jQuery および jQuery Mobile が AngularJS の前にロードされていることを確認してください。