我有一个带有嵌套json的客户下拉列表,并将所选的客户json对象保存在数据库中并以相同的格式检索它。现在,当我使用检索到的json对象设置所选客户模型时,客户丢弃不会被选中到这个新客户模型,并且下拉列表仍然未被选中。请在http://plnkr.co/edit/raUmvLDlgFbj1vHRlGeu?p=preview找到该傻瓜。
<select ng-model="myCustomer" ng-options="customer.name for customer in customers" >
</select>
这里我以相同的格式将myCustomer保存在数据库中。检索后,我将json对象分配给它(这里是sampleCustObj)。但即使为myCustomer分配了sampleCustObj,下拉列表仍然未被选中。如何使用sampleCustObj选择下拉列表?
答案 0 :(得分:4)
NgModel将通过引用而不是值来比较对象,因此通过将$scope.myCustomer
设置为提取的对象,对象将不会显示为已选中。来自AngularJS文档:
注意:ngModel按引用进行比较,而不是值。这很重要 绑定到一个对象数组。请参阅此jsfiddle中的示例。
您可以做的是找到数组中获取对象的索引,以及数组中此索引处的obeject链接。 Plunker的相关修改后的行列在下面:
var sampleCustObj = {
"paidCust": false,
"id": 17884,
"selected": false,
"carrierId": 0,
"name": "----Grteole Group",
"value": "CU17884",
"children": [],
"type": "CUST"
};
var fetchedObj = sampleCustObj; //fetch from DB
var index = $scope.customers.map(function(x) {return x.id; }).indexOf(fetchedObj.id);
$scope.myCustomer = $scope.customers[index];// Find fetched object in customer array
您还可以在此Plunker
中找到一个有效的示例