Javascript 如何在下拉列表中预选所选项目?[角度]
我目前有一项服务,它会给我一份州列表。该数组如下所示:Javascript 如何在下拉列表中预选所选项目?[角度],javascript,angularjs,Javascript,Angularjs,我目前有一项服务,它会给我一份州列表。该数组如下所示: model.Address.StateList = [ { Disabled: false, Group: null, Selected: false, Text: "CA", Value: "1" }, { Disabled: false, Group: null, Selected: false, Text: "IL
model.Address.StateList = [
{ Disabled: false,
Group: null,
Selected: false,
Text: "CA",
Value: "1"
},
{ Disabled: false,
Group: null,
Selected: false,
Text: "IL",
Value: "2"
},
{ Disabled: false,
Group: null,
Selected: false,
Text: "NJ",
Value: "3"
}
]
我还将从服务返回他们实际选择的状态,如下所示:
model.Address.State = "CA"
我已经搜索了stackoverflow,试图找到一种方法来实现这一点,但我不知道如何在列表中预先选择值
我试过这个:
<select id="State" ng-model="model.Address.State" ng-change="changeState(model.Address.State)" ng-options="option as option.Text for option in model.Address.StateList track by option.Value"></select>
但这只是挑选第一项
问题似乎在于我有一个状态集合,但我想要的模型只是单个文本。理想情况下,我希望设置要添加到模型对象的所选对象,以便在保存时,我可以将“model”传递给我的api,并提供我需要的所有值。有关可能的解决方案,请参阅
我在那里使用了一个范围变量selectedState
,并在ng model
属性中使用它,但是如果您愿意,可以将其替换为model.Address.State
由于使用
ngModel
指令绑定model.Address.State
,并使用track by option.Value
,因此可以将model.Address.State
的值设置为要设置为活动的选项的值:
model.Address.State = "1";
如果要改为使用“CA”
,可以将ng型号
更改为当前范围的属性:
<select ng-model="model.Address.State" ng-options="option.Text as option.Text for ... track by Text" ...>
$scope.selectedState = "CA";
$scope.selectedState=“CA”;
要用于ng型号的值应与ng选项中使用的值匹配。例如:
model.Address.State = "CA"; // matches the Text property
<select id="State" ng-model="model.Address.State" ng-options="option.Text for option in model.Address.StateList"></select>
希望能有帮助。我想出来了
多亏了这本有见地的指南,我对ng选项和角度选择有了更多的了解
最终的问题是,我需要指定下拉列表中显示的文本与模型中的文本匹配。使其工作的最终代码是:
<select id="State" ng-model="model.Address.State" ng-options="option.Text as option.Text for option in model.Address.StateList"></select>
您正在使用表单吗?目前还没有,您没有看到这些答案吗@georgeawg您的链接是$http,但我在发布之前确实签出了,这可能会有所帮助。这似乎对我根本不起作用。我有这个,但是model.Address.State在加载时是“CA”,但没有选择任何内容。在ng change函数中,我看到model.Address.State等于状态列表中的整个模型。意思是,如果我选择IL,那么model.Address.State等于StateList[1]在我的第一个答案中完全需要option.Text作为option.Text,而这正是有效的。。。我不会说这一点都没有帮助=PI说它“根本”不适合我,这是一个错误。谢谢你的见解,这似乎对我不起作用。我试过你的和@foxdonut,运气都不好。我似乎无法将model.Address.State(即“CA”)作为所选值。当我查看selected更改时的状态时,该值将成为objectI。我已经创建了一个JSFIDLE来演示您想要的行为:这与我的第一个答案相同,只是需要option.Text as option.Text
was close!:)
model.Address.State = "1"; // matches the Value property
<select id="State" ng-model="model.Address.State" ng-options="option.Text as option.Value for option in model.Address.StateList"></select>
<select id="State" ng-model="model.Address.State" ng-options="option.Text as option.Text for option in model.Address.StateList"></select>