向现有的JSON中添加新对象

4

我有一个像这样的下拉菜单

<input id="tripFrom" type="text" 
   angular-select2="{type:'typeahead',placeholder:'- Select -'}" 
   select-typeahead-params="{removeTripId:currentTrip.customerDetails.tripToID, type:'startsFrom'}" 
   select-typeahead-url="getTripFrom('startsFrom')"
   ng-model="currentTrip.fromTripID" 
   select-text="currentTrip.startingAreaName" 
/>

对于这个 下拉菜单,我获取的数据如下:

{"success":true,
 "items":[
   {"id":56565,"text":"andra"},
   {"id":56568,"text":"tamilnadu"}
 ]
}

我的问题是,当我在下拉菜单中添加一些新文本(该文本并不在下拉菜单中时),我需要将其作为新的对象创建在items内部。

当我失去下拉菜单的焦点时,新添加的数据应该在该下拉菜单中显示为已选择项。

这是我添加的内容:

$('#s2id_autogen8_search').change(function(){
  var data=[];var items={};
  var newAddress=$('#s2id_autogen8_search').val();
  var newId=Math.floor(Math.random()*1000000+1);
  var newTripAddress={id:newId,text:newAddress}
  items.id=newId;
  items.text=newAddress;
 data.push(items)
  /*$("#tripFrom").select2({
    data : newTripAddress})*/
});

但是当我离开输入框时,我的输入内容不显示。我做错了什么?


items 是指什么? - Satpal
请检查我的 JSON。 - krish
你的代码中没有展示使用 items 的元素,我看不到它的数据绑定。改变它应该如何改变你的元素呢? - Patrick Evans
不,这是从服务器端获取的JSON名称。我不知道它是否正确,所以我问你们。 - krish
大家好,我已经将它添加到数组中,但是当我失去焦点时它没有显示,这是现在唯一的问题。请检查更新后的代码。它被添加为新数组,为什么我无法添加到现有数组中? - krish
你尝试过在将项目添加到列表后运行$scope.$apply吗? - Rodolfo Marcos
1个回答

1
尝试使用模糊事件(blur)替代改变事件(change)。
$('#s2id_autogen8_search').change(function(){

// use this instead 

$('#s2id_autogen8_search').on('blur', function(){

这可能就是那样简单。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接