2017-02-03 81 views
0

我有这个模型看起来是这样的:angularjs NG-选项和NG-变化

{ 
    id: 1, 
    country: { 
     code: 'GB', 
     name: '' 
    } 
} 

国家代码存储在数据库中,但名字不是。然而,还有另一个应用程序需要国家名称,而不是代码.... 因此,编辑此模型时,我有一个下拉列表,其中包含代码的国家/地区名称。 我设置了NG选项像这样:

ng-options="item.code as item.name for item in controller.countries" 

我这样做,使该国将预先填入我当前的代码。 问题是,当有人选择不同的国家时,我想设置名称。 我试图做这样的:

ng-change="controller.setCodeAndName(controller.model.country, item)" 

和刚才的方法是这样的:

setCodeAndName: function (model, item) { 
    console.log(item); 
    model.code = item.value; 
    model.fullName = item.description; 
}, 

但是,这并不工作,因为项目是不确定的。我知道这是因为项目(它应该是当前选定的项目)尚未传递给该方法。 有谁知道一种方法来解决我的问题,以便一个国家是基于单独的代码预填充的,当它改变时它会将名称添加到对象?

回答

0

您还需要对选择ngModel - 我也建议只使用整个对象的模型应用 - 所以你select最终看起来像:

<select 
    ng-model="selectedItem" 
    ng-options="item as item.name for item in controller.countries" 
    ng-change="controller.setCodeAndName(selectedItem)" 
</select> 

而且你的方法:

setCodeAndName: function (item) { 
    console.log(item); 
    model.code = item.value; 
    model.fullName = item.description; 
},