Angular.js:设置从ID中选择的默认值

时间:2015-07-08 18:56:30

标签: javascript angularjs angularjs-ng-repeat ng-options

我有一个angular.js单页应用程序,从休息端点收集初始数据。

此应用获取表示已保存模型的ID列表,以及填充某些级联下拉列表的选项树。

如何根据模型中的ID设置树中的默认路径?

一些说明性代码:

型号:

DefaultOptions = [
    {"Id" : 044},
    {"Id" : 142},
    {"Id" : 244}
];

OptionsTree = [
    {"Text" : "Option1",
     "subOptions" : [
          {"Text" : "SubOption1", "Id" : 044},
          {"Text" : "SubOption2", "Id" : 142}
      ]},
    {"Text" : "Option2",
     "subOptions" : [
          {"Text" : "SubOptionA", "Id" : 3033},
          {"Text" : "SubOptionB", "Id" : 244}
      ]}
];

HTML:

<div ng-repeat="member in DefaultOptions">
    <select ng-model="option" 
            ng-options="o as o.Text for o in OptionsTree">
    </select>

    <select ng-model="subOption" 
            ng-options="s as s.Text for s in option.subOptions"
            ng-disabled="!option" 
            ng-change="member.Id = subOption.Id">
    </select>
</div>

如果用户选择新的ID,此HTML将正确更新DefaultOptions ID,但无法设置默认值。我错过了什么?

1 个答案:

答案 0 :(得分:1)

将您的选择“ng-model更改为ng-repeat

的帐户

然后把它放在你的控制器中:

// Main dropdown
$scope.member.option = OptionsTree[0];

然后:

// Sub dropdown
$scope.member.subOption = OptionsTree[0].subOptions[0].id

由于您的问题未说明您是否需要id或整个对象,因此我假设主下拉列表的整个对象只是子下拉列表的id。