AngularJS:在标签<select>中设置先前选择的选项

时间:2015-06-17 18:01:07

标签: angularjs

在表单中,我有一个有多个选项的下拉列表,如下所示。元素从数据库加载。 &LT;标签&gt;项目&lt; /标签&gt; &lt; select class =&#34; form-control m-b&#34;         NG-模型=&#34; model.livingComplexId&#34;         X-NG-变化=&#34; updateOne(model.livingComplexId)&#34;&GT;     &LT;选项&GT;&LT; /选项&GT;     &lt; option ng-repeat =&#34; itemOne in itemsForAddrLevelOne&#34;             值=&#34; {{itemOne.id}}&#34;&GT; {{itemOne.tobName}}&LT; /选项&GT; &LT; /选择&GT; 我做出选择。 例如,我选择了一个item2。 然后保存数据。然后,我打开要编辑的表单,我想看到我选择的项目,但列表是空的... 如何设置之前选择的值? 我非常感谢这些信息。谢谢大家。

3 个答案:

答案 0 :(得分:1)

<select ng-model="yourModel" ng-options="itemOne.tobName for itemOne in itemsForAddrLevelOne"></select>

在js中你应该设置$scope.yourModel = itemsForAddrLevelOne[0];

答案 1 :(得分:1)

我建议使用ngOptions指令生成选择菜单选项:

 <select ng-model="model.livingComplexId" ng-options="itemOne.id as itemOne.tobName for itemOne in itemsForAddrLevelOne"></select>

也许您可以另外将ng-model值更改为model并使用ng-options="itemOne as ..."(不使用.id)并添加track by itemOne.id

答案 2 :(得分:0)

我是这样做的...从AngularJS控制器发送请求时带有先前创建的对象的标识符:

$http({
     url: '/api/get/object',
     method: "POST",
     data: {"id" : $scope.someId}
}).success(function (data) {     
     $scope.object = angular.fromJson(data);     
}).error(function(errorData) { ... });

路线:

POST          /api/get/object               SomeController.object

Play控制器中的操作(我在服务器端使用Play Framework 1.3):

@Transactional
public static void object() {
    String id = request.params.get("body").split(":")[1];
    SomeObject someObject = SomeObject.findById(Long.parseLong(id));    
    renderJSON(someObject);
}

我将标识符分配给下拉列表。

<div data-ng-init="initComboBoxes()">
    <select id="livingComplexSelectId" 
            class="form-control m-b" 
            ...

然后,从$scope.object我提取了必要的ID并由他们填充了选择器。

AngularJS控制器的相关部分:

$scope.initComboBoxes = function() {
   var livingComplexSelector = document.getElementById('livingComplexSelectId');
   livingComplexSelector.value =  $scope.object.LivingComplexId; // set id
   //Loading of dependent values...     
   // $timeout(function(){$scope.afterWaitInitComboBoxes()}, 5000); 
}