我正在从服务器获取一些JSON frm,并使用它来填充组合框。
JSON条目如下所示
"campaign_id": "2",
"customer_id": "1",
"title": "Purple monkey dishwasher",
"description": "perfectly cromulent",
"start_time": "19/09/2015 09:42:06",
"end_time": "19/10/2015 09:42:06"
我宣布我的下落
<select name="SelectCampaignForConnections"
ng-model="connectionsCampaignDropDown"
ng-options="campaign.title for campaign in campaigns"
ng-change="ShowConnectionsForCampaign(connectionsCampaignDropDown)">
我初始化选择模型...
$http.get(url)
.success(function(data, status, headers, config)
{
if ($scope.connections.length > 0)
$scope.connectionsCampaignDropDown = $scope.connections[0];
当下拉列表显示时,它包含title
每个JSON条目BUT的元素,它具有一个初始的空白条目。
我做错了什么?
[更新] @sheilak给了一个很好的分析者:
为了使下拉列表默认为非空白值,传递给ng-model的变量的值必须等于传递给ng-options的选项之一。
在ng-options由campaign.title值填充的情况下,看起来值传递给ng-model,即connectionsCampaignDropDown应该填充$ scope.connections [0] .title而不是整个对象$ scope.connections [0]。
$ scope.connectionsCampaignDropDown = $ scope.connections [0] .title;
但是,我宁愿传递一个完整的对象,而不只是它的一个字段。
能做到吗?
(如果没有,那么我将仅将标题传递给ng-change函数ShowConnectionsForCampaign(),然后它将不得不遍历数据以查找匹配项,这似乎效率不高)
<select name="SelectCampaignForConnections"
ng-init="justGiveItAName=getInitialSelection()"
ng-model="justGiveItAName"
ng-options="campaign.title for campaign in campaigns"
ng-change="ShowConnectionsForCampaign(justGiveItAName)">
其中getInitialSelection()是作用域上的一个函数,如果需要的话可以使用一个参数,但是在上面概述的情况下,我可能会使用类似的东西:
function getInitialSelection() {return connections[0]};
或直接在中设置ng-init
:
ng-init="$scope.connections[0]"
(您可能不得不摆弄上面的代码-我尚未对其进行测试)。
btw-'justGiveItAName'是在其他地方可用的对象。
我现在已经对其进行了测试;有关工作示例,请参见这些小提琴:
直接在高温下放置:http://jsfiddle.net/lukkea/nuo2c3Lk/
在$ scope上使用函数:http : //jsfiddle.net/lukkea/o6strxjf/
传递对象而不是属性(按照OP的要求):http : //jsfiddle.net/lukkea/fsx8s67j/2/
将对象传入和传回:http : //jsfiddle.net/lukkea/ww9yqsrm/3/
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句