我知道这个问题的标题已经没有意义,因为对象的性质是无序的。但是,我想如果你看一下这里链接的屏幕截图,它会更有意义。
Picture of the two objects in my console.log
这是正在发生的事情。我正在创建一个名为$ scope.gameConfigs的对象,它本身是从我从服务器调用(配置对象)接收的数据创建的。这个$ scope.gameConfigs创建了一组下拉菜单。
基本上我要做的是让下拉菜单显示以前保存的数据,如果数据存在的话。保存的数据存在时,服务器返回包含所有已保存数据的对象。该数据按数字排序。我的问题是,这个保存的数据并不总是与我创建的$ scope.gameConfigs中的数据相同,这导致我的下拉列表中出现空白字段。
如果查看我链接的屏幕截图,您可以看到$ scope.gameConfigs中的键(其旁边写有第30行的对象)是Map,Server和Mode。
第二个对象,即从服务器返回的已保存数据,是一组对象,每个对象都有一个name属性(这是下拉菜单的名称)。如果您看一下,订单是服务器,地图和模式。
我的问题是,如何让Saved Data对象复制我的$ scope.gameConfigs对象的顺序?这甚至可能吗?如果没有,最好的方法是什么?
这也是我的页面/控制器的HTML和控制器,如果这有帮助的话:
<form class="form-horizontal" ng-controller="GamePreferenceCtrl">
<div ng-repeat="(name, section) in gameConfigs">
<label ng-bind="name"></label>
<select class="form-control" ng-model="formData.settings[$index].value" ng-change="dropdownItemClicked(name, formData.settings[$index].value)">
<option value="" disabled="disabled">---Please Select Option---</option>
<option ng-repeat="item in section" value="{{item.value}}" ng-bind="item.value"></option>
</select>
</div>
<div class="col-md-12" ng-include="gametemp"></div>
<div class="row">
<div class="hr-line-dashed"></div>
<div class="text-center col-md-12 padding-15">
<button class="btn btn-primary btn-lg" ng-click="saveGameSetting()" formnovalidate translate>
<i class='fa fa-circle-o-notch fa-spin' ng-if="showBusy"></i> Save
</button>
</div>
</div>
</form>
和控制器:
function GamePreferenceCtrl($scope, $filter, Tournament, Notification) {
$scope.$parent.child.game = $scope;
$scope.selectedItems = [];
$scope.formData = {};
$scope.loadConfig = function () {
Tournament.loadGameConfig($scope.id).then(function (response) {
$scope.gameConfigs = {};
if (response.data.tournamentPrefs) {
_.each(response.data.tournamentPrefs, function (val) {
if ($scope.formData.settings === undefined) {
$scope.formData.settings = [];
}
$scope.formData.settings.push({section: val.name, value: val.value});
});
$scope.formData = {};
};
$scope.dropdownItemClicked = function(name, value) {
if($scope.formData.settings === undefined) {
$scope.formData.settings = {};
$scope.formData.settings[name] = value;
} else {
console.log('inside else');
$scope.formData.settings[name] = value;
}
};
_.each(response.data.provisions, function (val) {
if ($scope.gameConfigs[val.section] === undefined) {
$scope.gameConfigs[val.section] = [];
}
$scope.gameConfigs[val.section].push({name: val.key, value: val.value});
});
});
};
我知道这是一个很长的阅读,我真的很感激能够帮助我解决这个问题的人。谢谢!
答案 0 :(得分:0)
你可能会喜欢
{{1}}&#13;