根据另一个字段选择GET新值后更新下拉内容

时间:2016-04-11 12:12:20

标签: javascript jquery angularjs

我有一个带有2 md自动填充字段的视图绑定到值列表。

当我选择第一个字段时,我发送一个GET请求以获取要绑定到下一个字段的值列表。

我获取新列表并将第二个控件的值更新为新列表。

但是,在UI中,第二个列表的值内容未更新以显示新的列表值。

第二个控件没有刷新新值。

我尝试了$ scope。$ apply()。

但是,它不起作用。我的开发工具崩溃了。

function CompanyInfoCtrl($state, $scope, genericInfo) {
  this.states = genericInfo.states;
  this.cities = genericInfo.cities;
      
  //when user Selects a State
  //Update this.cities with the new ListOfCities in the selected State

  //Call this method where field = this.cities
  function(address, field) {
    if(address && address.state) 
      return $http.get('http://localhost:8090/common/listofcitiesbystate/' + address.state).then(function(response){
        field = response.data;
      })
  }
}

1 个答案:

答案 0 :(得分:0)

模型没有被设置为Dirty状态,因此没有使用新值进行刷新。

在我的代码中,我之前将新值设置为: -

//where UiElementArrayList is a list of object and is bind to md autocomplete
//I need to update the list with new valueList based on User Action/Selection
//GET call to fetch new data
    this.cities =  response.data   

这解决了问题: -

//1. Empty the array
//2. Push the elements from the Response array to the UiElementArrayList
//i.e.
while(this.cities.length > 0)
    this.cities.pop()
for(i=0; i < response.data.length; i++)
    this.cities.push(response.data[i])

这会将模型设置为脏状态并进行刷新,我可以看到新的List元素。 :)

如果您遇到同样的问题,请为此建议任何改进/更好的方法。