您可以ng-model="foodCatagory"
在控制器中进行预设,例如:
$scope.foodCatagory = $scope.foodCatagories[0];
或者像这样使用 ng-init:
ng-init="foodCatagory = foodCatagories[0]"
请注意,如果您foodCatagories
异步加载数据,则指令编译时数据很可能不可用,这意味着ng-init
将无法工作。
由于 jQuery Mobile 使用额外的 DOM 元素来显示和处理选择,因此您需要告诉它在数据加载并设置选择值时自行刷新。
例如,您可以编写一个指令来处理它:
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>
该指令使用 a$watch
来检测何时ngModel
发生更改。如果有 newValue(执行时会有$scope.foodCatagory = $scope.foodCatagories[0];
)并且 oldValue 是undefined
(当第一个选择选项为空时将是第一次),它将在选择元素上调用刷新。它还将取消绑定$watch
. 根据您的需要进行修改。
示例:http ://plnkr.co/edit/GLelHd?p=preview
注意:确保 jQuery 和 jQuery Mobile 在 AngularJS 之前加载。