2017-02-03 100 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; 
},