gpt4 book ai didi

javascript - Angular ng-options 选择未设置为初始值

转载 作者:行者123 更新时间:2023-11-28 08:05:53 25 4
gpt4 key购买 nike

我正在发送一个 JSON 对象,以便初始化页面上的一些输入并选择值。该对象拥有 ShipTo 属性。我希望下拉列表中填充这个初始值。由于某种原因,即使它们是同一个对象,它也不会填充。我什至添加了一个 track by 以确保它正在测试基于 CompanyName 的相等性(不太确定这是否是 track by 的含义)这是我所拥有的:

JSON 对象:

{
"AccountNumber": "12345",
"Email": null,
"CompanyName": "HK Electric",
"Inactive": false,
"PhoneNumbers": null,
"ChildOfCustomer": "00000000-0000-0000-0000-000000000000",
"Id": "a4aab309-321c-4b09-969c-073eb83b90ad",
"ModifiedBy": null,
"ModifiedOn": "2014-07-16T18:46:52.065Z",
"CreatedBy": null,
"CreatedOn": "2014-07-16T18:46:52.065Z",
"IsDeleted": false
}

vm.shiptos:

[
{
"ShipTo": {
"AccountNumber": "1234",
"Email": null,
"CompanyName": "Mk Mechanical",
"Inactive": false,
"PhoneNumbers": null,
"ChildOfCustomer": "00000000-0000-0000-0000-000000000000",
"Id": "b90f9b8c-3910-43ec-8c14-6294155ce855",
"ModifiedBy": null,
"ModifiedOn": "2014-07-15T23:03:58.47Z",
"CreatedBy": null,
"CreatedOn": "2014-07-15T23:03:58.47Z",
"IsDeleted": false
},
"Addresses": [],
"Customer": null,
"Job": null,
"Orders": []
},
{
"ShipTo": {
"AccountNumber": "12345",
"Email": null,
"CompanyName": "HK Electric",
"Inactive": false,
"PhoneNumbers": null,
"ChildOfCustomer": "00000000-0000-0000-0000-000000000000",
"Id": "a4aab309-321c-4b09-969c-073eb83b90ad",
"ModifiedBy": null,
"ModifiedOn": "2014-07-16T18:46:52.065Z",
"CreatedBy": null,
"CreatedOn": "2014-07-16T18:46:52.065Z",
"IsDeleted": false
},
"Addresses": [],
"Customer": null,
"Job": null,
"Orders": []
}
]

我的 HTML 中的 ngoptions 语句:

<select id="ddlShipto" name="ddlShipto" data-ng-model="vm.Shipto" data-ng-options="shipto as shipto.ShipTo.CompanyName for shipto in vm.shiptos track by shipto.ShipTo.CompanyName" class="form-control FloatLeft" required>
<option selected="selected" value="">--Select One--</option>
</select>

最佳答案

不确定 track by 不是您在这里寻找的内容。

这是您正在使用的 ng-options 语法:选择作为数组中值的标签

你错误的部分是select参数。该参数的表达式会根据模型进行相等性检查,以确定它是否匹配(并将自动设置选定的选项等)。因此,现在您的选择参数是 shipto。这意味着为了默认值,您的模型需要等于 vm.shiptos 中的对象。

这里有两个选项:

第一个选项是循环遍历 vm.shiptos 并将模型设置为您想要的默认模型。例如:

angular.forEach($scope.vm.shiptos,function(el,i){
//check objects against the JSON object and set the model to the object if desired
if (el.ShipTo.AccountNumber === jsonObject.AccountNumber){
theModelForNgOptions = el;
}
};

第二个选项是将 ng-options select 参数更改为对象上的其他内容,以便模型不必是整个对象。如果 AccountNumber 是这些对象的唯一标识符,您可以将选项更改为:

data-ng-options="shipto.ShipTo.AccountNumber 作为 vm.shiptos 中的 Shipto.ShipTo.CompanyName

现在,仅当附加模型等于shipto.AccountNumber时,选择才会默认。这是一个工作中的 jsfiddle 示例:http://jsfiddle.net/ADukg/5392/

关于javascript - Angular ng-options 选择未设置为初始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24792088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com